Este artículo fue analizado por nuestros expertos así se asegura la exactitud de este enunciado.
Solución:
Si no te importan los datos:
La mejor manera sería dejar caer la base de datos y ejecutar syncdb
otra vez. O puedes ejecutar:
Para Django >= 1.5
python manage.py flush
Para Django <1.5
python manage.py reset appname
(puedes añadir --no-input
hasta el final del comando para que salte el indicador interactivo).
Si te importan los datos:
De los documentos:
syncdb solo creará tablas para modelos que aún no se han instalado. Nunca emitirá instrucciones ALTER TABLE para hacer coincidir los cambios realizados en una clase de modelo después de la instalación. Los cambios en las clases del modelo y los esquemas de la base de datos a menudo implican algún tipo de ambigüedad y, en esos casos, Django tendría que adivinar los cambios correctos a realizar. Existe el riesgo de que se pierdan datos críticos en el proceso.
Si ha realizado cambios en un modelo y desea modificar las tablas de la base de datos para que coincidan, use el comando sql para mostrar la nueva estructura SQL y compárela con su esquema de tabla existente para resolver los cambios.
https://docs.djangoproject.com/en/dev/ref/django-admin/
Referencia: Preguntas frecuentes – https://docs.djangoproject.com/en/dev/faq/models/#if-i-make-changes-to-a-model-how-do-i-update-the-database
La gente también recomienda South ( http://south.aeracode.org/docs/about.html#key-características), pero no lo he probado.
Usando Django Extensions, ejecutando:
./manage.py reset_db
Borrará las tablas de la base de datos y luego ejecutará:
./manage.py syncdb
Los recreará (el sur puede pedirle que migre cosas).
Creo que los documentos de Django mencionan explícitamente que si la intención es comenzar nuevamente desde una base de datos vacía (que parece ser la intención de OP), simplemente suelte y vuelva a crear la base de datos y vuelva a ejecutar migrate
(En lugar de usar flush
):
Si prefiere comenzar desde una base de datos vacía y volver a ejecutar todas las migraciones, debe descartar y volver a crear la base de datos y luego ejecutar la migración en su lugar.
Entonces, para el caso de OP, solo necesitamos:
- Soltar la base de datos de MySQL
- Recrear la base de datos
- Correr
python manage.py migrate
Te mostramos comentarios y valoraciones
Recuerda algo, que tienes permiso de agregar una reseña si te ayudó.