unidos ultimo trump situacion politica para nuevas nueva noticias migratorias migratoria los leyes ley inmigrantes inmigración inmigracion hoy estados actual django django-south

ultimo - No existe tal error de columna en la aplicación Django después de la migración al sur



politica migratoria de estados unidos 2018 (2)

Me he topado con el mismo problema presentado por el comentarista aquí: Django South: la tabla ya existe

No hubo seguimiento, así que pensé en publicar una nueva pregunta. Tengo una aplicación Django cuyas migraciones gestiono con South. Agregué un campo a mi modelo y luego corrí.

./manage schemamigration my_app --auto

que funcionó como se esperaba. Corriendo

./manage migrate my_app

sin embargo, dio como resultado un error que indica que la tabla asociada con el modelo que cambié ya existe. Esto me llevó a la pregunta anterior, así que correr

./manage migrate my_app --fake

resolvió el error de la tabla, pero ahora obtengo un error de Django de que la columna asociada con el nuevo campo no existe.

./manage sqlall my_app

Muestra que el esquema es el esperado.

Cualquier pensamiento sobre cómo remediar esto es apreciado!


Otra cosa a la que debe prestar atención: a menudo recibirá este error ( DatabaseError: no such column: appname_model.fieldname ) si está usando un valor default en una relación ForeignKey y agrega un campo a ese modelo FK.

Algo como (en tus models.py ):

class MyAppModel(models.Model): my_foreign_key = models.ForeignKey(FkModel, default=lambda: FkModel.objects.get(id=1), null=True)

Luego, en una nueva migración, agrega un nuevo campo a su FkModel:

class FkModel(models.Model): new_field = models.IntegerField(''New Field Name'', blank=True, null=True)

Recibirá un error cuando ejecute un schemamigration del schemamigration :

DatabaseError: no such column: myappmodel_fkmodel.new_field

Puede resolver esto asegurándose de que su migración inicial al Sur incluya esta función lambda valor predeterminado, y luego elimine el valor predeterminado en la próxima migración.

Esto me ha mordido en el pasado. Esperemos que ayude a alguien en el futuro.


Probablemente la forma más fácil para usted será comenzar las migraciones desde cero.

Elimine todas las migrations/* archivos de la aplicación que intenta arreglar. Restaure models.py al estado que se encuentra en este momento en la base de datos (con la ayuda de las herramientas de control de versiones, o simplemente comente los nuevos campos). Luego inicialice las migraciones:

manage.py migrate my_app --delete-ghost-migrations manage.py schemamigration my_app --init manage.py migrate my_app --fake

Esto creará un registro en las migraciones de cómo se ve la estructura actual de la base de datos.

Ahora agregue sus cambios a models.py y south ahora lo que ha cambiado:

manage.py schemamigration my_app --auto manage.py migrate my_app