migrations makemigrations force fake drop delete database django sqlite3

database - makemigrations - migrate force django



¿Cómo elimino una tabla de SQLite3 en DJango? (6)

borrar una aplicación es tan simple como escribir:

./manage.py sqlclear app_name | ./manage.py dbshell

luego, para reconstruir las tablas solo escriba:

./manage.py syncdb

Hice un modelo y ejecuté python manage.py syncdb. Creo que creó una mesa en el db. Luego me di cuenta de que había hecho una columna de forma incorrecta, así que la cambié y ejecuté el mismo comando, pensando que dejaría caer la tabla anterior y agregaría una nueva.

Luego fui al shell python manage.py e intenté ejecutar .objects.all (), y falló, diciendo que la columna no existe.

Quiero borrar la tabla anterior y luego ejecutar syncdb nuevamente, pero no puedo encontrar la manera de hacerlo.



Yo tuve el mismo problema.

Para una solución rápida (si no le importa perder sus tablas / datos), corrija su archivo models.py con los tipos de datos deseados, elimine la carpeta Migración y el archivo db.SQLite3,

luego vuelva a ejecutar los siguientes comandos:

  1. python manage.py migrate
  2. python manage.py makemigrations
  3. python manage.py migrate
  4. python manage.py createsuperuser (para crear un usuario administrador / pswd para administrar la página de administración)
  5. python manage.py runserver

Ninguna de las respuestas muestra cómo eliminar solo una tabla en una aplicación. No es muy difícil. El comando dbshell registra al usuario en el shell sqlite3.

python manage.py dbshell

Cuando esté en el shell, escriba el siguiente comando para ver la estructura de su base de datos. Esto le mostrará todos los nombres de las tablas en la base de datos (y también los nombres de las columnas dentro de las tablas).

SELECT * FROM sqlite_master WHERE type=''table'';

En general, Django nombra tablas de acuerdo con la siguiente convención: "appname_modelname". Por lo tanto, la consulta SQL que logra su objetivo será similar a la siguiente:

DROP TABLE appname_modelname;

Esto debería ser suficiente, incluso si la tabla tiene relaciones con otras tablas. Ahora puede cerrar la sesión del shell SQLITE ejecutando:

.exit

Si ejecuta syncdb nuevamente, Django reconstruirá la tabla de acuerdo con su modelo. De esta manera, puede actualizar sus tablas de base de datos sin perder todos los datos de la aplicación. Si te encuentras con este problema mucho, considera usar South: una aplicación django que migrará tus tablas por ti.


Otra forma simple de hacer esto mientras usas Django 1.4 o abajo, sería

python manage.py reset app_name

que elimina y vuelve a crear las tablas utilizadas por los modelos de esta aplicación.

Esto quedó obsoleto en Django 1.3 y ya no está disponible en Django 1.5


En Django 1.9 tuve que hacer los pasos de Kat Russo, pero la segunda migración fue un poco complicada. Tienes que correr

./manage.py migrate --run-syncdb