モデルを作成し、実行しましたpython manage.py syncdb。dbにテーブルを作成したと思います。その後、列を誤って作成したことに気づいたので、変更して実行同じコマンドで、古いテーブルを削除し、新しいテーブルを追加すると考えています。
次に、python manage.py Shell)に移動し、.objects.all()を実行しようとしましたが、失敗し、列が存在しないと言いました。
古いテーブルをクリアしてから、syncdbを再度実行したいのですが、その方法がわかりません。
Django 1.4以下を使用しながらこれを行う別の簡単な方法は、
python manage.py reset app_name
このアプリのモデルで使用されるテーブルを削除して再作成します。
これはDjango 1.3で廃止され、Django 1.5
アプリケーションをクリアするには、書くのと同じくらい簡単です。
./manage.py sqlclear app_name | ./manage.py dbshell
テーブルを再構築するには、次のように入力します。
./manage.py syncdb
答えはどれも、アプリでテーブルを1つだけ削除する方法を示していません。難しくありません。 dbshell
コマンドは、ユーザーをsqlite3シェルにログインさせます。
python manage.py dbshell
シェルを開いているときに、次のコマンドを入力してデータベースの構造を確認します。これにより、データベース内のすべてのテーブル名(およびテーブル内の列名)も表示されます。
SELECT * FROM sqlite_master WHERE type='table';
一般に、Djangoは次の規則に従ってテーブルに名前を付けます: "appname_modelname"。したがって、目標を達成するSQLクエリは次のようになります。
DROP TABLE appname_modelname;
テーブルに他のテーブルとのリレーションシップがある場合でも、これで十分です。次のコマンドを実行して、SQLITEシェルからログアウトできます。
.exit
Syncdbを再度実行すると、Djangoはモデルに応じてテーブルを再構築します。この方法では、アプリのデータをすべて失うことなくデータベーステーブルを更新できます。多くの場合、Southの使用を検討してください-テーブルを移行するDjangoアプリ。
dROPステートメントを取得します
python manage.py sqlclear app_name
してみて
python manage.py dbshell
dROPステートメントを実行します
チェックアウト http://docs.djangoproject.com/en/dev/ref/Django-admin/
同じ問題がありました。
迅速な解決のために(テーブル/データの消失を気にしない場合)、希望するデータ型でmodels.pyファイルを修正し、Migrationフォルダとdb.SQLite3ファイルを削除し、
その後、次のコマンドを再実行します。
In Django 1.9私はKat Russoの手順を実行しなければなりませんでしたが、2番目の移行は少し注意が必要でした。実行する必要があります
./manage.py migrate --run-syncdb
Django 2.1.7では、db.sqlite3
file in SQLite browser (Python on Pypi )もあり、コマンドを使用してテーブルを削除しました)
DROP TABLE appname_tablename;
その後
DELETE FROM Django_migrations WHERE App='appname';
その後、再度実行します
python manage.py makemigrations appname
python manage.py migrate appname