10
我試圖自動生成一個蒸餾器版本首次對預先存在的數據庫,但是當我運行下面的命令蒸餾器--autogenerate試圖重新創建每個表
alembic revision --autogenerate
它會產生嘗試遷移在我的數據庫中創建每個表和索引。此類似:
def upgrade():
### commands auto generated by Alembic - please adjust! ###
op.create_table('table1',
sa.Column('id', sa.SmallInteger(), nullable=False),
sa.Column('name', sa.String(length=100), nullable=True),
sa.Column('desc', sa.Text(), nullable=True),
sa.PrimaryKeyConstraint('id'),
sa.UniqueConstraint('name'),
schema='schema1'
)
op.create_index(op.f('ix_index1'), 'table1', ['name'], unique=False, schema='schema1')
... all my other tables/indexes ..
def downgrade():
### commands auto generated by Alembic - please adjust! ###
op.drop_index(op.f('ix_index1'), table_name='table1', schema='schema1')
op.drop_table('table1', schema='schema1')
... all my other tables/indexes ..
然後,如果我嘗試運行失敗的遷移,因爲對象已經存在:
sqlalchemy.exc.ProgrammingError: (ProgrammingError) relation "table1" already exists
因此,它看起來對我來說,蒸餾器,認爲我的數據庫不包含任何表,但它確實。
任何想法,爲什麼會發生這種情況?
難道你還沒有創建初始遷移? [http://alembic.zzzcomputing.com/zh-CN/latest/tutorial.html#running-our-first-migration](http://alembic.zzzcomputing.com/en/latest/tutorial.html#running-our -first-migration)根據你的問題來判斷,我假設你的數據庫已經創建好了。您需要告訴alembic DB的當前狀態,以便知道自動生成的內容。 – JJK