Ne peut pas terminer la migration de flacon
J'ai configuré un local Postgres DB avec SQLAlchemy et ne peut pas valider ma première entrée. J'obtiens toujours cette erreur...
ProgrammingError: (ProgrammingError) relation "user" does not exist
LINE 1: INSERT INTO "user" (name, email, facebook_id, facebook_token...
Il semble que les champs ne sont pas correspondant à celles dans la base de données. Je suis en train de migrer à l'aide flacon de migrer mais, lorsque je lance $ python app.py db migrate
j'obtiens cette erreur...
raise util.CommandError("No such revision '%s'" % id_)
alembic.util.CommandError: No such revision '39408d6b248d'
Il peut être le meilleur pour tout effacer et recommencer à zéro comme il semble que j'ai bâclé mon installation de base de données et /ou de la migration, mais je ne suis pas sûr de savoir comment.
Mise à JOUR: La base de données a commencé à travailler maintenant (j'ai laissé tomber et a créé à nouveau). Cependant, je suis toujours le même message d'erreur en essayant d'exécuter les migrations et il s'avère que la "révision " 39408d6b248d' est en se référant à une migration à partir d'un autre projet. J'ai ré-installé en flacon de migrer, mais même erreur.
source d'informationauteur Suraj Kapoor
Vous devez vous connecter pour publier un commentaire.
en flacon de migrer permettra de créer une table nommée "alembic_version" dans votre base de données.
donc, vous devez supprimer ce tableau et de supprimer les migrations dossier de votre projet.
et puis utiliser
$ python app.py db init
encore...Je pense que
$ python app.py db migrate
fonctionnera très bien.Alambic garde l'histoire de la migration de votre base de données, c'est pourquoi il reconnaît toujours il y a une autre révision. - Je conserver mon projet sur Heroku j'ai donc été en mesure de faire de heroku pg:traction ... pour être en mesure d'obtenir une nouvelle copie de ma base de données. Avant cela, vous devrez déposer vos locaux db. Dans le cas où vous ne voulez pas déposer vos locaux, je pense que la suppression de la table devrait fonctionner aussi. J'utilise le PG Commandant d'un outil graphique pour naviguer rapidement sur mes bases de données.
la première étape à faire est d'exécuter cette commande
alembic current
vous devriez obtenir une erreur, comme mentionné ci-dessus (l'objectif est de faire en sorte que cette commande renvoie une réponse valide).
la raison pour laquelle u obtenez c'est la colombie-britannique alambic est confus au sujet de votre état actuel.. c'est en supposant que vous devriez être en révision
39408d6b248d
mais décide alors que cette révision n'est pas valide.pour étudier cette question, nous allons découvrir les révisions qui sont considérés comme valides par l'alambic, exécutez cette commande:
vous obtiendrez une liste de toutes les révisions précédentes (note: c'est une bonne idée de joindre un message à côté de chaque révision.. pensez-y comme un bon git commit message)
la révision
39408d6b248d
clairement n'existe pas dans l'au-dessus de révisions. Cette révision est stocké dans le alembic_table dans la base de données.. vous pouvez le vérifier en allant sur votre dbase et en cours d'exécution:alors maintenant, vous devriez examiner l'état de votre base de données et voir où il se situe vis-a-vis de la révision de sortie ci-dessus:
dans mon cas, par fouiller mon dbase, il devient évident que la révision, je suis en ce moment.. qui est qui dbase a été mis en place, mais les autres révisions n'ont pas été inclus encore.
alors maintenant, je remplace la valeur sur le dbase avec celui que j'ai trouvé à partir de l'historique de commande ci-dessus:
et maintenant en cours d'exécution alambic de rendement courant
fait.
En supposant que vous avez vérifié que la base de données à l'aide de psql ou pgAdmin, cette erreur signifie généralement exactement ce qu'il dit. Qui peut être due à:
Cela signifie que l'entrée dans le tableau
alembic_version
de votre db est "39408d6b248d" et il n'y a pas de fichier de migration liées à elle dans les migrations dossier (par défautmigrations/versions
).Donc préférable de supprimer la table
alembic_version
à partir de votre base de données et ne$ python app.py db history
pour obtenir le nouveau chef de migrations, de dire, 5301c31377f2Maintenant exécuter
$ python app.py db stamp 5301c31377f2
laisser alambic sais que c'est de la migration, de la tête (qui est stockée dans le tableaualembic_version
).J'ai eu la même erreur hier, pour mon cas, le numéro de révision '39408d6b248d' est en raison de votre précédente migration des actions de mise à niveau, à chaque fois que votre couru script de mise à niveau, puis d'un Alambic version sera généré et stocké dans les données.sqlite.
vous devez effectuer une mise à niveau qui a généré ci-dessus '39408d6b248d", mais ensuite vous avez supprimé toute migrations/directory et supprimé tous les scripts de mise à niveau. La base de données par exemple les données.sqlite encore des magasins de 39408d6b248d", mais il n'y a pas selon le script de migration existe.
pour ma solution, j'ai supprimer tout Alambic versions de la base de données et fait toutes les mises à jour à partir de zéro.
J'ai rencontré un problème similaire. Après l'exécution de l'python manage.py db migrer de commande de la base de données les tables n'ont pas été créés, il n'y avait qu'un alambic de la table dans la base de données.
J'ai trouvé la solution dans le flacon de la migration de la documentation:
https://flask-migrate.readthedocs.org/en/latest/
Cette commande créé les tables et appliqué les migrations de base de données.
J'ai eu le même problème. Selon la version en alembic_version table dans la db, la migration de l'action est à la recherche de cette version dans /migrations/versions dossier qui a déjà été supprimé. Donc la solution est de supprimer alembic_version table:
Si vous utilisez sqlite,
1. Ouvrez votre xxx.sqlite fichier db.
sqlite3 xxx.sqlite
2. vérifier les tables
.tables
3. vous verrez alembic_version, le supprimer
DROP TABLE alembic_version