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すべてのテーブルを削除するコマンド)とは何ですか? は機能しませんでした。
データベースを削除し、アプリのmigrations
ディレクトリにある移行ファイル(.py
および.pyc
)を削除します(__init__.py
ファイルは削除しないでください)。次に、python manage.py makemigrations app
およびpython manage.py migrate
を実行します。
Django 1.10を使用して同じ問題が発生しました。ここに私がしたこと、データベースのsqliteファイルを削除、各アプリ内のpycacheフォルダを削除、削除init。pyファイルを除いて、各アプリのmigrationsフォルダー内のすべてのファイルを実行し、python manage.py makemigrations
およびpython manage.py migrate
を実行しました。また、データベースを削除したため、 python manage.py createsuperuser
を使用して新しいスーパーユーザーを作成します。
私にとっては
python manage.py flush
古いdbの内容を削除したので、Django 2.1.4で新しいレコードを作成できました。
新しいスーパーユーザーを作成することを忘れないでください:
python manage.py createsuperuser
データベースファイルを削除しないでください!
移行ファイルを削除してからフラッシュを実行するのは正しいですが、sqliteデータベースファイルの削除は間違っています。これは毎回うまくいきました。他のデータベースを使用している場合は、多くの作業と準備を節約できます。