web-dev-qa-db-ja.com

Djangoでdbをリセットする方法は? 「リセット」コマンドが見つからないというエラーが表示される

この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
79
Prem

resetflushでDjango 1.5に置き換えられました。以下を参照してください。

python manage.py help flush
132
robertklep

「フラッシュ」回答は一部のケースで機能するように見えますが、すべてのケースでは機能しません。データベースの値をフラッシュするだけでなく、テーブルを適切に再作成する必要がありました。私はまだマイグレーションを使用していないので(初期段階)、本当にすべてのテーブルをドロップする必要がありました。

すべてのテーブルを削除することがわかった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
30
LisaD

LisaDの答えと同様に、 Django Extensions には、「フラッシュ」のようにテーブルを切り捨てるのではなく、すべてを完全にドロップする素晴らしいreset_dbコマンドがあります。ルーターを指定する必要があるため、次のようになります。

python ./manage.py reset_db --router=default

テーブルをフラッシュするだけでは、オブジェクトを削除するときに発生した永続的なエラーは修正されませんでした。 reset_dbを実行すると、問題が修正されました。

19
aendrew

Django 2.0を使用している場合

python manage.py flush 

動作します

13
Vaibhav Gupta

Django 1.11では、各アプリケーションのmigrationsフォルダーからすべての移行ファイルを削除します(__init__.pyを除くすべてのファイル)。それから

  1. データベースを手動で削除します。
  2. データベースを手動で作成します。
  3. python3 manage.py makemigrationsを実行します。
  4. python3 manage.py migrateを実行します。

そして、データベースは完全にリセットされました。

8
Gursimran Singh

データベース全体をクリーンアップする場合は、次を使用できます。python manage.py flushDjangoのデータベーステーブルをクリーンアップする場合アプリは、次を使用できます:python manage.py migrate appname zero

7
Abhijeet Padhy

私にとってこれは問題を解決しました。

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
4
yask

@ LisaD's へのフォローアップのみ。
2016年(Django 1.9)以降、次のように入力する必要があります。

heroku pg:reset DATABASE_URL
heroku run python manage.py makemigrations
heroku run python manage.py migrate

これにより、Heroku内に新しいデータベースが新しくなります。

2
Jan

移行を使用している場合、この link にはシナリオに応じていくつかの解決策があります。

1
Kandhan
  1. データベースを手動で削除するだけです。最初にバックアップを作成してください(私の場合はdb.sqliteは私のデータベースです)

  2. このコマンドを実行しますmanage.py migrate

1
Bikram
python manage.py flush

古いデータベースの内容を削除し、

新しいスーパーユーザーを作成することを忘れないでください:

python manage.py createsuperuser
0
Thusitha Deepal