Я использую alembic вместе с flask-migrate вместе с Postgres для своей базы данных.Я запустил инициализацию db и мигрировал db.Однако, когда я запускаю команду обновления базы данных, я получаю следующую ошибку:
cursor.execute(statement, parameters)
psycopg2.ProgrammingError: relation "event" does not exist
The above exception was the direct cause of the following exception:
Я очень хорошо понимаю, почему происходит ошибка.Сценарий пытается создать таблицу Attendee, которая ссылается на таблицу событий, которая создается позже в сценарии.
У меня вопрос, у меня много связей, и я не думаю, что имеет смысл переставлять каждую таблицув сценарии, чтобы заставить его строить.Не должны ли alembic и flask-migrate выполнять стандартный сценарий создания таблицы, который перечисляет несколько взаимосвязей без сбоев, если все эти взаимосвязи определены в сценарии.Это мой алембический сценарий с некоторыми изменениями.
op.create_table('attendee',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('event_id', sa.Integer(), nullable=False),
sa.Column('event_plan_id', sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(['event_id'], ['event.id'], ),
sa.ForeignKeyConstraint(['event_plan_id'], ['event_plan.id'], ),
sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_table('event',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('event_name', sa.String(length=128), nullable=False),
sa.Column('description', sa.String(length=128), nullable=False),
sa.Column('organizer_id', sa.Integer(), nullable=False),
sa.Column('location_id', sa.Integer(), nullable=False),
sa.Column('attendee_id', sa.Integer(), nullable=False),
sa.Column('group_chat_id', sa.Integer(), nullable=False),
sa.Column('event_type_id', sa.Integer(), nullable=False),
sa.ForeignKeyConstraint(['attendee_id'], ['attendee.id'], ),
sa.ForeignKeyConstraint(['event_type_id'], ['event_type.id'], ),
sa.ForeignKeyConstraint(['group_chat_id'], ['group_chat.id'], ),
sa.ForeignKeyConstraint(['location_id'], ['location.id'], ),
sa.ForeignKeyConstraint(['organizer_id'], ['user.id'], ),
sa.PrimaryKeyConstraint('id')
)
Чтобы ответить на очевидный вопрос, если я перемещаюсь по сценарию создания таблицы, он завершается ошибкой за другой таблицей, поскольку участник ссылается на 3 другие таблицы, и эти таблицы ссылаютсяа также другие таблицы, которые потерпели бы неудачу, если бы они были созданы первыми.