South migraciones en django

61 views
Skip to first unread message

tony

unread,
Apr 17, 2012, 5:10:20 PM4/17/12
to djan...@googlegroups.com

C:\Users\tony\Dropbox\aplicacion\akyles>manage.py schemamigration appak --auto
 ? The field 'Perprolin.perpemp' does not have a default specified, yet is NOT N
ULL.
 ? Since you are removing this field, you MUST specify a default
 ? value to use for existing rows. Would you like to:
 ?  1. Quit now, and add a default to the field in models.py
 ?  2. Specify a one-off value to use for existing columns now
 ?  3. Disable the backwards migration by raising an exception.
 ? Please select a choice:

Hola Compañeros

Estoy utilizando South para migrar los cambio del modelo a la base de datos pero cuando inserto una columna en el modelo me envia este mensaje, no se que hacer al respecto,
agradezco la colaboración de ustedes.

Saludos.

Antonio

miguel miseck cumpa ascuña

unread,
Apr 17, 2012, 5:14:42 PM4/17/12
to djan...@googlegroups.com
Pasa que tu columan a insertar es Not NULL, asi que
1. debes asignarle algun valor usando la propiedad default (models.py)
2. asignar un valor mediante el mismo south a la columna que se cree
saludos


--
Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a djan...@googlegroups.com
Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.



--
Miguel Angel "Miseck" Cumpa Ascuña

Antonio Samper

unread,
Apr 17, 2012, 5:45:56 PM4/17/12
to djan...@googlegroups.com
Hola Muguel

    perpcod = models.ForeignKey(Perclien,verbose_name="Codigo del perfil")

esta es la linea que genera el error, como podria asignar el default

Raimon Esteve

unread,
Apr 17, 2012, 5:58:56 PM4/17/12
to djan...@googlegroups.com
    perpcod = models.ForeignKey(Perclien,verbose_name="Codigo del perfil")

esta es la linea que genera el error, como podria asignar el default

1- en el modelo django, añadiendo el parametro default

default = ''

2 - en el south, tecleando la opción 2 y ponerle cual usará como defecto. por ejemplo datetime.today() (lee los pasos que se entiende ;) ) 

miguel miseck cumpa ascuña

unread,
Apr 17, 2012, 5:59:28 PM4/17/12
to djan...@googlegroups.com
bueno ahi no pones dafault, ademas eso es lo que te dice la primera opcion, lo que yo hago es simplemente seleccionar la segunda opcion, y asignarle un valor (1 por ejemplo que seria el valor pk de Perclien) ahora es referencial, solo si hay registros, south le dara el valor a cada registro de tu columna que vas agregar

Raimon Esteve

unread,
Apr 17, 2012, 6:02:18 PM4/17/12
to djan...@googlegroups.com
2 - en el south, tecleando la opción 2 y ponerle cual usará como defecto. por ejemplo datetime.today() (lee los pasos que se entiende ;) ) 

al ser un ForeinKey no tiene sentido el datetime :P

Te lo comentava por si es unique es la opción que propone south. Revisa tu modelo que sabrás mejor lo que quieres relacionar.

Antonio Samper

unread,
Apr 17, 2012, 6:49:30 PM4/17/12
to djan...@googlegroups.com
C:\Users\tony\Dropbox\aplicacion\akyles>manage.py migrate appak
Running migrations for appak:
 - Migrating forwards to 0005_auto__add_field_perprolin_perpcod.
 > appak:0003_auto__add_field_perprolin_perpcod
FATAL ERROR - The following SQL query failed: ALTER TABLE "Perprolin" ADD COLUMN
 "perpcod_id" integer NOT NULL DEFAULT None;
The error was: no existe la columna «none»

 ! Error found during real run of migration! Aborting.

 ! Since you have a database that does not support running
 ! schema-altering statements in transactions, we have had
 ! to leave it in an interim state between migrations.

! You *might* be able to recover with:   = ALTER TABLE "Perprolin" DROP COLUMN "
perpcod_id" CASCADE; []

 ! The South developers regret this has happened, and would
 ! like to gently persuade you to consider a slightly
 ! easier-to-deal-with DBMS (one that supports DDL transactions)
 ! NOTE: The error which caused the migration to fail is further up.
Error in migration: appak:0003_auto__add_field_perprolin_perpcod

Bueno coloque 1 y me aparece este cuadro de error

--

Raimon Esteve

unread,
Apr 18, 2012, 3:37:35 AM4/18/12
to djan...@googlegroups.com
Bueno coloque 1 y me aparece este cuadro de error

y la tabla Perclien existe el registro ID 1?


Esau Rodriguez

unread,
Apr 18, 2012, 6:09:43 AM4/18/12
to djan...@googlegroups.com
Hola,
veo que te han dado un montón de soluciones pero creo que no han dado
en el clavo. El problema está en que has eliminado el atributo perpemp
y South no sabrá que debe hacer en el caso de que deses dar marcha
atrás una vez aplicada la migración que estás generando. Las tres
opciones que te ofrece son:
1 Que pongas un valor por defecto al campo perpemp y ese se
utilizará en la migración.
2 Que pongas un valor a mano y ese se usará por South en la
migración hacia atrás
3 Que deshabilites la migración hacia atrás para esta migración

Saludos,
Esaú.

2012/4/17 tony <sasys...@gmail.com>:

--
Esaú Rodríguez
esa...@gmail.com

Antonio Samper

unread,
Apr 19, 2012, 1:51:30 PM4/19/12
to djan...@googlegroups.com
Listo Compañeros gracias por sus consejos. me funcionó la recomendación de Miguel, detodas maneras graacias a todos.

Saludos.

Antonio


Carlos Luis Jordán Murillo

unread,
Apr 19, 2012, 2:38:09 PM4/19/12
to djan...@googlegroups.com
Antonio hazte un manual sobre eso y publicalo para la comunidad
--
Saludos
Carlos Jordán
Ingeniero  
Escuela Superior Politécnica del Litoral
Ciencias Computacionales especialización Sistemas de Información

Antonio Samper

unread,
Apr 20, 2012, 11:02:15 AM4/20/12
to djan...@googlegroups.com
Seguro es buena idea, voy a sacar el tiempo.

Saludos

Carlos Luis Jordán Murillo

unread,
Apr 20, 2012, 11:05:22 AM4/20/12
to djan...@googlegroups.com
Yo pienso que tambien debemos de crear un hashtag en twitter para nuestra comunidad #django-es...
Reply all
Reply to author
Forward
0 new messages