No se puede completar la migración de matraz

He configurado una base de datos local de Postgres con SQLAlchemy y no puedo confirmar mi primera entrada. Sigo recibiendo este error …

ProgrammingError: (ProgrammingError) relation "user" does not exist LINE 1: INSERT INTO "user" (name, email, facebook_id, facebook_token... 

Parece que los campos no coinciden con los de la base de datos. Estoy intentando migrar usando flask-migrate pero cuando ejecuto $ python app.py db migrate me sale este error …

 raise util.CommandError("No such revision '%s'" % id_) alembic.util.CommandError: No such revision '39408d6b248d' 

Puede ser mejor eliminar todo y comenzar desde cero, ya que parece que he dañado la configuración de mi base de datos y / o la migración, pero no estoy seguro de cómo hacerlo.

ACTUALIZACIÓN : la base de datos ha comenzado a funcionar ahora (la eliminé y la creé nuevamente). Sin embargo, sigo recibiendo el mismo error al intentar ejecutar migraciones y resulta que “no hay tal revisión ‘39408d6b248d’ se refiere a una migración de un proyecto no relacionado. Reinstalé flask-migrate pero el mismo error.

    flask-migrate creará una tabla llamada “alembic_version” en su base de datos.
    por lo que debe dejar esta tabla y eliminar la carpeta de migraciones en su proyecto.
    y luego use $ python app.py db init nuevamente …
    Creo que $ python app.py db migrate funcionará bien.

    Alembic mantiene el historial de migración en su base de datos, por eso aún reconoce que hay otra revisión allí. Mantengo mi proyecto en Heroku, así que solo pude hacer heroku pg: pull … para poder obtener una nueva copia de mi base de datos. Antes de esto tendrás que soltar tu db local. En caso de que no quiera abandonar su local, creo que dejar caer la mesa también debería funcionar. Utilizo el PG Commander como una herramienta GUI para navegar rápidamente por mis bases de datos.

    el primer paso que debe hacer es ejecutar este comando por lo que debe recibir un error como se mencionó anteriormente (el objective es asegurarse de que este comando devuelva una respuesta válida).

    La razón por la que está obteniendo esto es porque b alembic está confundido acerca de su estado actual … se supone que debería estar en la revisión 39408d6b248d pero luego decide que esa revisión no es válida.

    para investigar esto, averigüemos qué revisiones se consideran válidas por alambique, ejecute este comando:

     alembic history --verbose 

    obtendrá una lista de todas las revisiones anteriores (nota: es una buena idea adjuntar un mensaje al lado de cada revisión. Considérelo como un buen mensaje de confirmación de git)

     Rev: 594cc72f56fd (head) Parent: 262f40e28682 Path: *************** adjust context_id in log table so that it is a substring of the object_id Revision ID: 594cc72f56fd Revises: 262f40e28682 Create Date: 2015-07-22 14:31:52.424862 Rev: 262f40e28682 Parent: 1dc902bd1c2 Path: *************** add context_id column to log table Revision ID: 262f40e28682 Revises: 1dc902bd1c2 Create Date: 2015-07-22 11:05:37.654553 Rev: 1dc902bd1c2 Parent:  Path: *************** Initial database setup Revision ID: 1dc902bd1c2 Revises: Create Date: 2015-07-06 09:55:11.439330 

    la revisión 39408d6b248d claramente no existe en las revisiones anteriores. Esta revisión se almacena en la tabla alembic en la base de datos. Puede verificarla yendo a su base de datos y ejecutando:

     $ select * from alembic_version; version_num -------------- 57ac999dcaa7 

    por lo que ahora debe revisar el estado de su base de datos y ver dónde encaja con las revisiones publicadas anteriormente:

    en mi caso, al buscar en mi base de datos se hace evidente en qué revisión estoy en este momento … que es la base de datos que se ha configurado, pero las otras revisiones aún no se han incluido.

    así que ahora sustituyo el valor en la base de datos con el que encontré en el comando de historial anterior:

     vibereel=> update alembic_version set version_num = '1dc902bd1c2'; 

    y ahora ejecutando rendimientos actuales de alambique

     INFO [alembic.migration] Context impl PostgresqlImpl. INFO [alembic.migration] Will assume transactional DDL. 1dc902bd1c2 

    hecho.

    Significa que la entrada en la tabla alembic_version de su base de datos es “39408d6b248d” y no hay ningún archivo de migración relacionado con él en la carpeta de migraciones (por defecto, migrations/versions ).

    Así que mejor suelte la tabla alembic_version de su db y haga

    $ python app.py db history para obtener el nuevo jefe de migraciones, por ejemplo, 5301c31377f2

    Ahora ejecute $ python app.py db stamp 5301c31377f2 para hacerle saber a $ python app.py db stamp 5301c31377f2 que es su cabeza de migración (que se almacena en la tabla alembic_version ).

    Suponiendo que haya verificado que la base de datos existe con psql o pgAdmin, este error generalmente significa exactamente lo que dice. Eso puede ser debido a:

    • no se conecta a la instancia de la base de datos correcta (verifique la URL de su base de datos: host / puerto y nombre de la base de datos)
    • no está configurando correctamente SQLAlchemy (ver: SQLAlchemy create_all () no crea tablas )

    Recibí el mismo error ayer, en mi caso, el número de revisión ‘39408d6b248d’ se debe a sus acciones de actualización de migración anteriores, cada vez que ejecuta un script de actualización, se generará y almacenará una versión de Alembic en data.sqlite.

    debe haber realizado cualquier actualización que generó por encima de ‘39408d6b248d’, pero luego eliminó todo el directorio / migraciones y eliminó todos los scripts de actualización. La base de datos, por ejemplo, data.sqlite, todavía almacena ‘39408d6b248d’ pero no existe un script de migración adecuado.

    para mi solución borro versiones enteras de Alembic en la base de datos e hice todas las actualizaciones desde cero.

    Me encontré con un problema similar. Después de ejecutar el comando de migración de python manage.py db que no se crearon las tablas de la base de datos, solo había una tabla extraña en la base de datos.

    Encontré la solución en la documentación de flask-migrate: https://flask-migrate.readthedocs.org/en/latest/

    El script de migración debe revisarse y editarse, ya que Alembic actualmente no detecta todos los cambios que realice en sus modelos. En particular, Alembic actualmente no puede detectar índices. Una vez finalizado, el script de migración también debe agregarse al control de versiones.

    Luego puede aplicar la migración a la base de datos:

     python manage.py db upgrade 

    Este comando creó las tablas y aplicó las migraciones de base de datos.

    Tuve el mismo problema. De acuerdo con la versión en la tabla alembic_version en db, la acción de migración está buscando esa versión en la carpeta / migrations / Versiones que ya se ha eliminado. Por lo tanto, la solución es eliminar la tabla alembic_version: Si está utilizando sqlite, 1. Abra su archivo de base de datos xxx.sqlite. sqlite3 xxx.sqlite 2. check tables .tables 3. verá alembic_version, elimínelo DROP TABLE alembic_version