Ответ 1
reset
был заменен на flush
на Django 1.5, см.
python manage.py help flush
Следуя этому Django по примеру tutotrial здесь: http://lightbird.net/dbe/todo_list.html
В учебнике говорится:
"Это изменяет наш макет таблицы и хорошо спросить Django resetи воссоздать таблицы:
manage.py reset todo; manage.py syncdb
"
хотя, когда я запускаю manage.py reset todo
, я получаю ошибку:
$ python manage.py reset todo
- Unknown command: 'reset'
Это потому, что я использую sqlite3, а не postgresql?
Может кто-нибудь сказать мне, что команда для reset базы данных?
Команда: 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
reset
был заменен на flush
на Django 1.5, см.
python manage.py help flush
Похоже, что ответ "flush" будет работать для некоторых, но не для всех случаев. Мне нужно было не только сбросить значения в базе данных, но и правильно воссоздать таблицы. Я пока не использую миграции (первые дни), поэтому мне действительно нужно было удалить все таблицы.
Я нашел два способа отбросить все таблицы, оба требуют чего-то другого, кроме основного django.
Если вы на Heroku, удалите все таблицы с помощью pg: reset:
heroku pg:reset DATABASE_URL
heroku run python manage.py syncdb
Если вы можете установить расширения Django, у него есть способ сделать полный сброс:
python ./manage.py reset_db --router=default
Как и в ответ LisaD, Django Extensions имеет отличную команду reset_db, которая полностью отбрасывает все, а не просто обрезает таблицы, подобные "flush". Вы должны указать маршрутизатор, чтобы он выглядел так:
python ./manage.py reset_db --router=default
Простое удаление таблиц не фиксировало постоянную ошибку, которая произошла, когда я удалял объекты. Выполнение reset_db исправило проблему.
если вы используете Django 2.0 Тогда
python manage.py flush
будет работать
С django 1.11 просто удалите все файлы миграции из папки migrations
каждого приложения (все файлы, кроме __init__.py
). Тогда
python3 manage.py makemigrations
.python3 manage.py migrate
.И voilla, ваша база данных была полностью reset.
Если вы хотите очистить всю базу данных, вы можете использовать: python manage.py flush Если вы хотите очистить таблицу базы данных приложения Django, вы можете использовать: python manage.py migrate appname zero
Для меня это решило проблему.
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.
Если вы используете миграции, ссылка имеет ряд решений в зависимости от сценария.
Просто вручную удалите вашу базу данных. Сначала убедитесь, что вы создали резервную копию (в моем случае db.sqlite3 - это моя база данных)
Запустите эту команду manage.py migrate
python manage.py flush
удалил старое содержимое БД,
Не забудьте создать нового суперпользователя:
python manage.py createsuperuser