#python #orm #sqlalchemy #flask-sqlalchemy #sqlalchemy-migrate
#python #orm #sqlalchemy #flask-sqlalchemy #sqlalchemy-миграция
Вопрос:
У меня настроена локальная БД, для которой я создаю объектно-реляционное сопоставление с объектами SQLAlchemy.
Все было хорошо, пока я не изменил схему БД, включая добавление нового столбца в одну из таблиц. Теперь я продолжаю видеть:
sqlalchemy.exc.NoReferencedColumnError: не удалось инициализировать целевой столбец для ForeignKey ‘ModelFit.id ‘ в таблице ‘ModelPrice’: в таблице ‘ModelFit’ нет столбца с именем ‘id’
где ‘id’ — это объект столбца SQLAlchemy столбца «Id» таблицы ModelFit.
Прямые SQL-запросы к новой БД выполняются нормально, единственная проблема заключается в инициализации этого сопоставления.
Я видел аналогичный вопрос от кого-то, кто сказал, что они поняли это, «удалив файл .db из проекта и запустив его снова», но у меня нет такого файла. Я даже не использую flask или что-то еще для создания БД, делал это прямо в локальной БД с использованием SQL.
Любая помощь или понимание того, что здесь происходит? Или было бы полезно получить дополнительную информацию?
Комментарии:
1. Вы обновили свою модель, чтобы она соответствовала таблице?
Ответ №1:
В конце концов, я это понял — похоже, порядок столбцов должен был быть одинаковым. Запуск ALTER TABLE в схеме для добавления столбца «Id» добавил его вправо. В моем классе SQLAlchemy первым был указан столбец «id».
Я не могу подтвердить причину, потому что я не просматривал ту часть документов, которая подтверждала бы это, но, как ни странно, это было так.
Поэтому в основном пришлось удалить таблицу и переделать ее в желаемом порядке.