Używam Flask-Migrate (Alembic) do aktualizowania mojej bazy danych. Zaktualizowałem plik models.py
, jednak popełniłem błąd. Pobiegłem migrację i udał się do uaktualnienia bazy danych, jednak mam ten błąd:Nie można migrować ani aktualizować bazy danych za pomocą Flask-Migrate (Alembic)
sqlalchemy.exc.IntegrityError: (_mysql_exceptions.IntegrityError) (1215, 'Cannot add foreign key constraint') [SQL: u'\nCREATE TABLE topics (\n\tid INTEGER NOT NULL AUTO_INCREMENT, \n\t`subjectID` INTEGER, \n\ttopic VARCHAR(150) NOT NULL, \n\tPRIMARY KEY (id), \n\tFOREIGN KEY(`subjectID`) REFERENCES subjects (id)\n)\n\n']
co zrobiłem było mieć db.Text
zamiast db.Integer
dla klucza obcego.
Kiedy próbuję uruchomić nową migrację uzyskać to:
alembic.util.CommandError: Target database is not up to date.
Więc teraz utknąłem. Nie mogę zaktualizować bazy danych ani przeprowadzić migracji. Próbowałem downgrade do starszej wersji bazy danych za pomocą czegoś takiego:
python manage.py db downgrade --sql b877018671c:36949b1cca31
Ale kiedy biegnę python manage.py db current
uzyskać najnowszą wersję bazy danych, której siedzę w
Czy istnieje poprawka do tego.? Dzięki.
Wygląda na to, że masz migrację (tę złą), której jeszcze nie uruchomiłeś. Zmodyfikuj go jako poprawny lub usuń i ponownie wygeneruj migrację. – dirn
Jak usunąć migrację? –
Migracje są po prostu plikami. Musisz tylko usunąć plik. Flask-Migrate zwykle przechowuje je wewnątrz 'migrations/version'. – dirn