python - tutorial - setting up postgres django
Cómo restablecer db en Django? Aparece un error de ''restablecimiento'' de comando no encontrado (9)
Siguiendo este Django por ejemplo tutotrial aquí: http://lightbird.net/dbe/todo_list.html
El tutorial dice:
"Esto cambia el diseño de nuestra tabla y tendremos que pedirle a Django que restablezca y vuelva a crear las tablas:
manage.py reset todo; manage.py syncdb
manage.py reset todo; manage.py syncdb
"
sin embargo, cuando ejecuto manage.py reset todo
, obtengo el error:
$ python manage.py reset todo
- Unknown command: ''reset''
¿Esto es porque estoy usando sqlite3 y no postgresql?
¿Alguien puede decirme cuál es el comando para restablecer la base de datos?
El comando: python manage.py sqlclear todo
devuelve el error:
$ python manage.py sqlclear todo
CommandError: App with label todo could not be found.
Are you sure your INSTALLED_APPS setting is correct?
Así que agregué ''todo'' a mi INSTALLED_APPS en settings.py, y ejecuté python manage.py sqlclear todo
nuevo, lo que python manage.py sqlclear todo
este error:
$ python manage.py sqlclear todo
- NameError: name ''admin'' is not defined
Con django 1.11, simplemente elimine todos los archivos de migrations
carpeta de migrations
de cada aplicación (todos los archivos excepto __init__.py
). Entonces
- Extraer manualmente la base de datos.
- Crear manualmente la base de datos.
- Ejecute
python3 manage.py makemigrations
. - Ejecute
python3 manage.py migrate
.
Y voilla, tu base de datos ha sido completamente restablecida.
De forma similar a la respuesta de LisaD, Django Extensions tiene un gran comando reset_db que lo elimina por completo, en lugar de simplemente truncar las tablas como lo hace "flush". Debe especificar un enrutador, por lo que puede verse así:
python ./manage.py reset_db --router=default
El solo hecho de descargar las tablas no solucionaba un error persistente que ocurría cuando borraba objetos. Hacer un reset_db solucionó el problema.
Para mí, esto resolvió el problema.
heroku pg:reset DATABASE_URL
heroku run bash
>> Inside heroku bash
cd app_name && rm -rf migrations && cd ..
./manage.py makemigrations app_name
./manage.py migrate
Parece que la respuesta ''flush'' funcionará para algunos, pero no para todos los casos. Necesitaba no solo vaciar los valores en la base de datos, sino también recrear las tablas correctamente. Todavía no estoy usando migraciones (primeros días), así que realmente necesitaba abandonar todas las tablas.
En Heroku uno puede colocar todas las tablas con pg: reset:
heroku pg:reset DATABASE_URL
heroku run python manage.py syncdb
Y aunque manage.py ''reset'' fue reemplazado por ''flush'', Django Extensions tiene una manera de hacer un reinicio completo:
python ./manage.py reset_db --router=default
Si desea limpiar toda la base de datos, puede usar: python manage.py flush Si desea limpiar la tabla de la base de datos de una aplicación Django, puede usar: python manage.py migrate appname zero
Si está utilizando migraciones, este link tiene una serie de soluciones según el escenario.
Solo un seguimiento de respuesta de .
A partir de 2016 ( Django 1.9
), debe escribir:
heroku pg:reset DATABASE_URL
heroku run python manage.py makemigrations
heroku run python manage.py migrate
Esto te dará una base de datos nueva y fresca dentro de Heroku.
si estás usando Django 2.0 entonces
python manage.py flush
trabajará
reset
ha sido reemplazado por el flush
con Django 1.5, ver:
python manage.py help flush