Djangoでdbをリセットする方法は?コマンド 'reset' not foundエラーが表示される


98

このDjango by Example 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'

これは、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

回答:


153

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

python manage.py help flush

4
残念ながら、これはmanage.py reset <appname>のように個々のアプリでは機能しません。エラーになります:CommandError:コマンドは引数を受け入れません
Andre

5
幸いなことに、誰かが1.5に移植し直しました:)
robertklep 2013年

おかげで、知っておくと良い、最近(最後に変更された6か月前)フィクスチャに関する公開されたdjangoのドキュメント(2019-07-11)で「リセット」について話している:code.djangoproject.com/wiki/Fixtures
vchrizz

34

「フラッシュ」の回答は、すべてではなく一部で機能するようです。データベースの値をフラッシュするだけでなく、テーブルを適切に再作成する必要がありました。私はまだマイグレーションを使用していないので(数日後)、本当にすべてのテーブルを削除する必要がありました。

すべてのテーブルを削除するために見つけた2つの方法。どちらもコアジャンゴ以外のものを必要とします。

Herokuを使用している場合は、pg:resetを使用してすべてのテーブルをドロップします。

heroku pg:reset DATABASE_URL
heroku run python manage.py syncdb

Django Extensionsをインストールできる場合は、完全にリセットする方法があります。

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

6
@jonalv、まずdjango-extensionsをインストールする必要があります。
edjroot 2016年

6
また、あなたはそれが下に含まれている必要がありINSTALLED_APPSの中でsettings.py
Max Candocia

21

LisaDの回答と同様に、Django Extensionsには、「flush」のようにテーブルを切り捨てるだけでなく、すべてを完全に削除する優れたreset_dbコマンドがあります。

python ./manage.py reset_db

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


1
これは私が探していたものですが、私は--router議論を提供する必要はありませんでした。おそらくそれは今ではオプションであり、5年後ですか?:)
2018


11

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


9

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

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

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


sqliteのを使用している場合は、必要が手動でデータベースを作成しないように、python3 manage.py makemigrationsそして python3 manage.py migrate少なくともジャンゴ2.0で、それの世話をする
toto_tico

4

私はこれで問題を解決しました。

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

3

@LisaDの回答をフォローアップするだけです。
2016(Django 1.9)以降、次のように入力する必要があります。

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

これにより、Heroku内の新しいデータベースが提供されます。


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

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


1
python manage.py flush

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

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

python manage.py createsuperuser
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.