web-dev-qa-db-ja.com

DjangoでSQLiteデータベースをリセットします

Djangoプロジェクトをリファクタリングしようとしています。いくつかのアプリの名前を変更して新しいアプリを追加し、いくつかのモデルをシャッフルしました。データベースと移行をクリアして、最初からやり直したいのですが、これを達成する方法がわからない。

rm -r myapp/migrations // I ran this for all my apps    
python manage.py flush
python manage.py makemigrations myapp // I ran this for all my apps
python manage.py migrate // This errors

エラーが発生します:

Django.db.utils.OperationalError: table "myapp_mymodel" already exists

誰かが私が間違っているかもしれないことを教えてもらえますか?

編集: Djangoすべてのテーブルを削除するコマンド)とは何ですか? は機能しませんでした。

13
grez

データベースを削除し、アプリのmigrationsディレクトリにある移行ファイル(.pyおよび.pyc)を削除します(__init__.pyファイルは削除しないでください)。次に、python manage.py makemigrations appおよびpython manage.py migrateを実行します。

28
vsd

Django 1.10を使用して同じ問題が発生しました。ここに私がしたこと、データベースのsqliteファイルを削除、各アプリ内のpycacheフォルダを削除、削除init。pyファイルを除いて、各アプリのmigrationsフォルダー内のすべてのファイルを実行し、python manage.py makemigrationsおよびpython manage.py migrateを実行しました。また、データベースを削除したため、 python manage.py createsuperuserを使用して新しいスーパーユーザーを作成します。

2
Daniel Vieira

私にとっては

python manage.py flush

古いdbの内容を削除したので、Django 2.1.4で新しいレコードを作成できました。

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

python manage.py createsuperuser
0
WebComer

データベースファイルを削除しないでください!

移行ファイルを削除してからフラッシュを実行するのは正しいですが、sqliteデータベースファイルの削除は間違っています。これは毎回うまくいきました。他のデータベースを使用している場合は、多くの作業と準備を節約できます。

  1. すべての「.py」および「.pyc」ファイルを手動で削除する
  2. python manage.py flush
    確認のために「yes」と入力します
  3. python manage.py makemigrations
  4. python manage.py migrate
0
winux