このDjangoに続いて、チュートリアルの例があります: 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'
これは、postgresqlではなくsqlite3を使用しているためですか?
誰かがデータベースをリセットするコマンドを教えてくれますか?
コマンド: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?
そこで、settings.pyのINSTALLED_APPSに「todo」を追加し、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
「フラッシュ」回答は一部のケースで機能するように見えますが、すべてのケースでは機能しません。データベースの値をフラッシュするだけでなく、テーブルを適切に再作成する必要がありました。私はまだマイグレーションを使用していないので(初期段階)、本当にすべてのテーブルをドロップする必要がありました。
すべてのテーブルを削除することがわかった2つの方法には、どちらもコアDjango以外のものが必要です。
Herokuを使用している場合は、pg:resetを使用してすべてのテーブルを削除します。
heroku pg:reset DATABASE_URL
heroku run python manage.py syncdb
Django Extensionsをインストールできる場合、完全なリセットを行う方法があります。
python ./manage.py reset_db --router=default
LisaDの答えと同様に、 Django Extensions には、「フラッシュ」のようにテーブルを切り捨てるのではなく、すべてを完全にドロップする素晴らしいreset_dbコマンドがあります。ルーターを指定する必要があるため、次のようになります。
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
を実行します。そして、データベースは完全にリセットされました。
データベース全体をクリーンアップする場合は、次を使用できます。python manage.py flushDjangoのデータベーステーブルをクリーンアップする場合アプリは、次を使用できます: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's へのフォローアップのみ。
2016年(Django 1.9
)以降、次のように入力する必要があります。
heroku pg:reset DATABASE_URL
heroku run python manage.py makemigrations
heroku run python manage.py migrate
これにより、Heroku内に新しいデータベースが新しくなります。
移行を使用している場合、この link にはシナリオに応じていくつかの解決策があります。
データベースを手動で削除するだけです。最初にバックアップを作成してください(私の場合はdb.sqliteは私のデータベースです)
このコマンドを実行しますmanage.py migrate
python manage.py flush
古いデータベースの内容を削除し、
新しいスーパーユーザーを作成することを忘れないでください:
python manage.py createsuperuser