Как сбросить БД в Django? Я получаю команду "сброс" не найдена ошибка
следуя этому Джанго на примере tutotrial здесь:http://lightbird.net/dbe/todo_list.html
в учебнике написано:
" это меняет наш макет таблицы, и нам придется попросить Django сбросить и воссоздать таблицы:
manage.py reset todo; manage.py syncdb
"
хотя, когда я запускаю manage.py reset todo
, Я получаю ошибку:
$ python manage.py reset todo
- Unknown command: 'reset'
это потому, что я использую sqlite3, а не postgresql?
может кто-нибудь скажите мне, что команда для сброса базы данных?
команды: python manage.py sqlclear todo
выдает ошибку:
$ python manage.py sqlclear todo
CommandError: App with label todo could not be found.
Are you sure your INSTALLED_APPS setting is correct?
поэтому я добавил "todo" к моим INSTALLED_APPS в settings.py и побежал python manage.py sqlclear todo
снова, что приводит к этой ошибке:
$ python manage.py sqlclear todo
- NameError: name 'admin' is not defined
9 ответов:
похоже, что ответ "flush" будет работать для некоторых, но не для всех случаев. Мне нужно было не просто очистить значения в базе данных, но и правильно воссоздать таблицы. Я еще не использую миграции (первые дни), поэтому мне действительно нужно было удалить все таблицы.
два способа, которые я нашел, чтобы удалить все таблицы, оба требуют чего-то другого, чем ядро django.
Если вы находитесь на Heroku, отбросьте все таблицы с pg: reset:
heroku pg:reset DATABASE_URL heroku run python manage.py syncdb
Если вы можете установить Django Расширения, он имеет способ сделать полный сброс:
python ./manage.py reset_db --router=default
похоже на ответ Лисад, Расширения Django имеет отличную команду reset_db, которая полностью отбрасывает все, а не просто усекает таблицы, как это делает "flush". Вы должны указать маршрутизатор, поэтому он может выглядеть так:
python ./manage.py reset_db --router=default
просто промывка таблиц не исправляла постоянную ошибку, которая произошла, когда я удалял объекты. Выполнение reset_db Исправлена проблема.
С django 1.11, просто удалите все файлы миграции из
migrations
папка каждого приложения (все файлы, кроме__init__.py
). Тогда
- удалить базу данных вручную.
- вручную создать базу данных.
- выполнить
python3 manage.py makemigrations
.- выполнить
python3 manage.py migrate
.и вуаля, ваша база данных была полностью сброшена.
Если вы хотите, чтобы очистить всю базу данных, вы можете использовать: python manage.py flush Если вы хотите очистить таблицу базы данных приложения Django, вы можете использовать: python manage.py перенести имя приложения ноль
для меня это решило проблему.
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
только в @LisaD это ответ.
В 2016 году (Django 1.9
), вам нужно набрать:heroku pg:reset DATABASE_URL heroku run python manage.py makemigrations heroku run python manage.py migrate
это даст вам новую свежую базу данных в Heroku.
Если вы используете миграции, это ссылке имеет множество решений в зависимости от сценария.