Utilizzo Flask-Migrate (Alembic) per l'aggiornamento del database. Ho aggiornato il mio file models.py
ma ho fatto un errore. Ho eseguito una migrazione e sono andato per aggiornare il database, ma ho ottenuto questo errore:Impossibile eseguire la migrazione o l'aggiornamento del database con 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']
quello che avevo fatto era ha db.Text
invece di db.Integer
per una chiave esterna.
Quando provo eseguire una nuova migrazione ottengo questo:
alembic.util.CommandError: Target database is not up to date.
Così ora mi sono bloccato. Non riesco ad aggiornare il database né eseguire una migrazione. Ho cercato di tornare a una versione base di dati più vecchia utilizzando qualcosa di simile:
python manage.py db downgrade --sql b877018671c:36949b1cca31
Ma quando corro python manage.py db current
ho la versione del database più recente, che mi sono bloccato in
C'è una correzione per questo.? Grazie.
Sembra che tu abbia una migrazione (quella cattiva) che non hai ancora eseguito. Modificalo come corretto o cancellalo e genera nuovamente la migrazione. – dirn
Come si elimina una migrazione? –
Le migrazioni sono solo file. Devi solo cancellare il file. Flask-Migrate tipicamente li memorizza all'interno di 'migrations/version'. – dirn