Django-そのようなテーブルはありません:main.auth_user__old


85

公式のDjangoドキュメントの最初のアプリチュートリアルに従っていましたが、管理ページから行った変更を保存しようとすると、このエラーが発生しました。私はそれについていくつかの調査を行いましたが、データベースの移行など、私が見つけた可能な解決策は単に機能しません。私のコードの特定の部分を見たい場合は、私に知らせてください。

以下はエラーです:

/ admin / polls / question / 1 / change /のOperationalErrorそのようなテーブルはありません:main.auth_user__oldリクエストメソッド:POSTリクエストURL: ['/ Users / gfioravante / Projects / test_app / test_app'、 '/ usr / local / Cellar / python /3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python37.zip'、'/usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3。 7 '、' /usr/local/Cellar/python/3.7.1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload '、' / Users / gfioravante / Projects / test_app / ta_env / lib / python3.7 / site-packages ']サーバー時間:2018年12月5日水曜日16:45:00 +0000 http Djangoバージョン: 2.1.4例外タイプ:OperationalError例外値:そのようなテーブルはありません:main.auth_user__old例外の場所:/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base .py in execute、行296 Python実行可能ファイル:/ Users / gfioravante / Projects / test_app / ta_env / bin / python3 Pythonバージョン:3.7.1 Pythonパス:

とトレースバック:

環境:

リクエスト方法:POSTリクエストURL: http //127.0.0.1 8000 admin polls question change /

Djangoバージョン:2.1.4 Pythonバージョン:3.7.1インストール済みアプリケーション:['polls.apps.PollsConfig'、 'django.contrib.admin'、 'django.contrib.auth'、 'django.contrib.contenttypes'、 'django .contrib.sessions '、' django.contrib.messages '、' django.contrib.staticfiles ']インストールされているミドルウェア:[' django.middleware.security.SecurityMiddleware '、' django.contrib.sessions.middleware.SessionMiddleware '、' django .middleware.common.CommonMiddleware '、' django.middleware.csrf.CsrfViewMiddleware '、' django.contrib.auth.middleware.AuthenticationMiddleware '、' django.contrib.messages.middleware.MessageMiddleware '、' django.middleware.clickjacking.XFrameOptionsMiddleware ']

トレースバック:

_execute85のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py"。returnself.cursor.execute(sql、params)

実行296のファイル「/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py」。returnDatabase.Cursor.execute(self、query、 params)

上記の例外(そのようなテーブルはありません:main.auth_user__old)は、次の例外の直接の原因でした。

内部34のファイル「/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/exception.py」。response=get_response(request)

_get_response126のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py"。response=self.process_exception_by_middleware(e、request)

_get_response124のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/core/handlers/base.py"。response=wrapped_callback(request、* callback_args、** callback_kwargs)

ラッパー604のファイル「/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py」。returnself.admin_site.admin_view(view)(* args、 ** kwargs)

_wrapped_view142のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py"。response=view_func(request、* args、** kwargs)

_wrapped_view_func44のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/views/decorators/cache.py"。response=view_func(request、* args、** kwargs)

内部223のファイル「/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/sites.py」。returnview(request、* args、** kwargs)

change_view1640のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py"。returnself.changeform_view(request、object_id、form_url、extra_context)

_wrapper45のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py"。returnbound_method(* args、** kwargs)

_wrapped_view142のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/utils/decorators.py"。response=view_func(request、* args、** kwargs)

changeform_view1525のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py"。returnself._changeform_view(request、object_id、form_url、extra_context)

_changeform_view1571のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py"。self.log_change(request、new_object、change_message)

log_change826のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/options.py"。change_message=message、

log_action35のファイル「/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/contrib/admin/models.py」。change_message=change_message、

manager_method82のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py"。returngetattr(self.get_queryset()、name)(* args、** kwargs)

create413のファイル「/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py」。obj.save(force_insert = True、using = self.db )

保存718のファイル「/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py」。force_update=force_update、update_fields=update_fields)

save_base748のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py"。updated=self._save_table(raw、cls、force_insert、force_update 、using、update_fields)

_save_table831のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py"。result=self._do_insert(cls._base_manager、using、fields 、update_pk、raw)

_do_insert869のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/base.py"。using=using、raw = raw)

manager_method82のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/manager.py"。returngetattr(self.get_queryset()、name)(* args、** kwargs)

_insert1136のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/query.py"。returnquery.get_compiler(using = using).execute_sql(return_id )

execute_sql1289のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/models/sql/compiler.py"。cursor.execute(sql、params)

実行100のファイル「/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py」。returnsuper()。execute(sql、params)

実行68のファイル「/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py」。returnself._execute_with_wrappers(sql、params、many = False、 executor = self._execute)

_execute_with_wrappers77のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py"。returnexecutor(sql、params、many、context)

_execute85のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py"。returnself.cursor.execute(sql、params)

出口のファイル「/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/utils.py」 89のからdj_exc_value.with_traceback(traceback)を発生させます。

_execute85のファイル "/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/utils.py"。returnself.cursor.execute(sql、params)

実行296のファイル「/Users/gfioravante/Projects/test_app/ta_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py」。returnDatabase.Cursor.execute(self、query、 params)

例外タイプ:/ admin / polls / question / 1 / change /のOperationalError例外値:そのようなテーブルはありません:main.auth_user__old


データがない場合は、データを削除して再度移行してください。不可能な場合は、python manage.py showmigrationsどの移行が行われていないかを確認してください
2018

回答:


52

私はちょうどこれに出くわしました、それはhttps://code.djangoproject.com/ticket/29182に関連しているようです。今のところ、sqliteのバージョンを2.6より前のバージョン(例:2.5.1)にダウングレードすることができます


7
この問題の修正は現在コミットされており、次のポイントリリース2.1.5(2019年1月1日予定)および2.0.10(リリース日未定)に含まれる予定です。
Alasdair 2018

8
macOSシステムsqlite3をダウングレードするのはそれほど簡単ではありませんか、それともここで何かが足りませんか?私の回避策は、github / master djangoをインストールすることです(これは修正されています)。
アルパー2018

1
@Alper現在のdjangoをアンインストールしてから、GitHubからdjangoをインストールしました。バグはまだ残っており、macOSでsqlite3をダウングレードできませんでした(たとえば、brew install sqlite3@3.25.1を使用)。
Hatzil 2018

5
更新後、必ずデータベースを削除し、migrationsコマンドを使用してデータベースを再構築してください。
Mitsjol 2018

9
バグは、Djangoの2.1.5で修正されて@Alvaro
セルチュク

53

次の手順を維持して、この問題を簡単に取り除きます。

  1. djangoバージョン2.1.5を維持する(このバージョンで対処される問題) pip install django==2.1.5
  2. SQLiteデータベースを削除します
  3. もう一度移行する python manage.py makemigrationsもてからpython manage.py migrate
  4. サーバーを起動します python manage.py runserver

完了!


1
これは完全に機能しますが、sqliteデータベースファイルを削除したくないと思いますか?
フィリップムトゥア

1
これは、sqliteデータベースを削除しなくても機能します(ただし、移行は可能です)。私は2.0.4と古いプロジェクトに取り組んでいた
izzulmakin

おかげで、これはうまくいきます。バージョン2.0.7を使用していますが、管理者にデータを保存する際に問題が発生します。
xreyc_developer 2220

どうもありがとうございました、これはうまくいきます
新しいプログラマー

15

これを実行すると、問題が解決しました。

pip install Django --upgrade

次に:

python manage.py migrate

python manage.py makemigrations app

python manage.py migrate

11

この問題を解決するために私がしたことは次のとおりです。

  1. 仮想環境に移動してインストールします django@2.1.7

    pip install django==2.1.7
    
  2. db.sqlite3ルートフォルダ内のファイルを削除します。

  3. 新しいを作成する db.sqlite3ルートフォルダにをます。
  4. 移行を再実行します。

    python3 manage.py makemigrations
    
    python3 manage.py migrate
    

これで問題なく動作するはずです。


「ルートフォルダ内のdb.sqlite3ファイルを削除する」が重要です〜Python3を実行しますmanage.pymakemigrationsは新しいsqlite3ファイルを作成します。
ジェローム

何らかの理由でsqliteの削除が機能しなかったので、pycache +マイグレーションも削除してみました(私はDjangoを学んでいます)、それでうまくいきました。
AnshumanKumar20年

10

この問題はALTER TABLE RENAME、SQLite 3.26.0のステートメントの動作が変更されたことが原因で発生します(互換性に関する注意事項を参照)。彼らはまたPRAGMA legacy_alter_table = ON、以前のバージョンとの互換性を維持するためにステートメントを導入しました。今後のDjangoリリース2.1.5は、前述のステートメントを修正プログラムとして利用します。2019年1月1日に予定されています。


9

このフォルダーに移動しますdjango / db / backends / sqlite3

schema.py別のフォルダへのバックアップファイル

元のschema.pyをテキストエディタで開きます

そこに次のようなコードスニペットが表示されます

    def __enter__(self):
    # Some SQLite schema alterations need foreign key constraints to be
     # disabled. Enforce it here for the duration of the schema edition.
     if not self.connection.disable_constraint_checking():
         raise NotSupportedError(
             'SQLite schema editor cannot be used while foreign key '
             'constraint checks are enabled. Make sure to disable them '
             'before entering a transaction.atomic() context because '
             'SQLite3 does not support disabling them in the middle of '
             'a multi-statement transaction.'
         )
     self.connection.cursor().execute('PRAGMA legacy_alter_table = ON')
     return super().__enter__()

コメントして、次のコードスニペットを貼り付けます

     def __enter__(self):
    # Some SQLite schema alterations need foreign key constraints to be
    # disabled. Enforce it here for the duration of the transaction.
    self.connection.disable_constraint_checking()
    self.connection.cursor().execute('PRAGMA legacy_alter_table = ON')
    return super().__enter__()

これは私のために働いた。(schema.pyのバックアップは、作業がうまくいかない場合に備えてです; D)

詳細については

https://github.com/django/django/pull/10733/commits/c8ffdbe514b55ff5c9a2b8cb8bbdf2d3978c188f#diff-0c8f495bfee773ab7b5409533bd6d7ef


この修正をdjango1.11に使用しましたが、「c.execute( 'PRAGMA Foreign_keys = 0')」の後に「c.execute( 'PRAGMAlegacy_alter_table = ON')」という行を追加するだけで修正されました。
N00B

2
私はdjango2.0.7を必要とするチュートリアルの途中です。このソリューションは機能します:)
Bisonbleu19年

@Bisonbleu私は同じチュートリアルの真っ最中だと思います。しかし、解決策は私にはうまくいきませんでした。あなたがしたことを詳しく説明していただけますか?
code_life

2
@unathletic_coderは、Namal Jayasundaraの回答で提案されているように、21行目の/project_name/lib/python3.7/site-packages/django/db/backends/sqlite3/schema.pyにアクセスしました。def__enter__(self):および既存のコードを提案された3行のコードに置き換えました。私がやっているyoutube.com/watch?v=F5mRW0jo-U4
Bisonbleu

6

Djangoを2.1.4から2.1.5にアップグレードすることで問題を解決しましたが、バグは古いバージョンのDjangoを使用してデータベースに挿入したオブジェクトに何らかの形で関連しているようであるため、プロジェクトを新たに再構築する必要がありました。


1
その場合、migrate and makemigrationsコマンドは、新しいdjangoに十分な場所にあります。
PravinRGMishra19年

5
  1. まず、サーバーを停止し、db.sqlite3を削除します。
  2. 次に、次のコマンドを実行する必要があります。pythonmanage.py makemigrations python manage.pymigrate
  3. このコマンドを実行した後、スーパーユーザーを作成する必要があります。スーパーユーザーを作成するには、次のコマンドを実行します。pythonmanage.pycreatesuperuserスーパーユーザーの詳細を入力します。
  4. サーバーを再度実行します。

そこに行きます。


5

私にとって、それは私のdjangoバージョン(つまり2.1)からのものでした。より高いバージョンをインストールします(何らかの理由で2.1.5を使用しました)** db.sqlite3を削除し、init .pyrunコマンドを除く移行フォルダー内のすべてを削除します。

pip install django==2.1.5 --upgrade
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver

4

同じことが私にも起こり、非常にイライラします。私は自分の環境にanacondaを使用していますが、最新バージョンのsqliteをすぐに再インストールしないとsqliteを削除できないことがわかりました。古いバージョンのdjangoを試してもうまくいかなかったようです。私のために働いた唯一の解決策は、PostgreSQLデータベースを使用することです。確かに理想的ではありませんが、将来はPostgreSQLデータベースを利用する予定なので、時間の無駄ではありませんでした。あなたが私と同じ場所にいることに気づいたら、このビデオ場合は、PostgreSQLデータベースをdjangoプロジェクトに接続する方法を知りたい場合が役立つことがあります。

実際にsettings.pyに変更を加える前に、postgreSQLデータベースをインストールする必要があります。インストールでは、すべてのオプションで[次へ]をクリックする必要があります。ただし、インストール時に使用するユーザー名とパスワードを覚えておいてください。


3

上記の問題と解決策は次のとおりです。

1)ターミナルに移動し、pip install django==2.1.7またはdjangoの最新バージョンを入力します

2)インストール後、端末にを入力しpython manage.py makemigrations、次にpython manage.py migrate

3)ターミナルで、コードを使用してサーバーを起動します python manage.py runserver

4)パスワードを使用して管理サーバーにログインし、製品を追加します。製品が正常に追加されます。


Stack Overflowへようこそ!所属を開示し、投稿を通じてサイトを宣伝する方法としてサイトを使用しないでください。良い答えを書くにはどうすればよいですか?を参照してください

2

任意のソフトウェアをダウングレードしたくない他人のために、あなたはあなたに向かうことができるsettings.pyファイルとでDATABASESdictの、あなたは置き換えることができ.sqlit3.postgresql、そして右下それが変更db.sqlit3db.sql。これにより、デフォルトのデータベースがpostgreSQLの使用に切り替わります。

そうすることで、あなたはする必要がありますpip install psycopg2

db.sqlite3ファイルを削除し(ファイルがある場合/ファイルの内容を失うことを気にしない場合)__init__.py、アプリの移行フォルダー内のファイル以外のすべてを削除します。それがすべて終わったらpython manage.py makemigrations、Pythonを実行して実行できますmanage.py migrateをするはずです:)

私が誰かを助けることができたと思います!


2
これらすべてを実行した後に接続エラーが発生する理由を理解できない人がこれを機能させるには、PostgreSQLもインストールする必要があります。:)
ギルバート

psycopg2はPostgreSQLではありませんか?それが私のためにサーバーを起動しない理由を説明する原因
ハハ

2
AFAIK psycopg2は、PythonがPostgreSQLと通信できるようにするためのアダプターですが、PostgreSQLは個別にインストールする必要があります。注:私はDjangoを初めて使用するので、私が言うことは何でも一粒の塩で取ってください。
ギルバート

2

Open => / YourAppFolder/migrations/0001_initial.py」のように移行するファイルがこれらのファイルをすべて削除するのがわかります。そしてfollwingコマンドの1-実行python manage.py makemigrations 2 -python manage.py migrate 希望を、それはあなたの問題を解決しなければなりません


1
結局、問題はそれに関連していませんでしたが、時間を割いてくれてありがとう!
northernSage

2

最新のDjango2.2.12にアップグレードして、migrateまたは公式のデータベース再構築スクリプトを実行した後でも、同じエラーが発生しました__old_django.db.utils.IntegrityError: The row in table 'djangocms_blog_post_translation' with primary key '2' has an invalid foreign key: djangocms_blog_post_translation.master_id contains a value '2' that does not have a corresponding value in djangocms_blog_post__old.id.

これが私のハックです:

  1. データベースの内容をSQLにダンプします。 sqlite3 my_db.db .dump > my_db.sql
  2. 交換、SQL出力を超える正規表現を実行し__old" ("id")" ("id") DEFERRABLE INITIALLY DEFERRED
  3. 古いデータベースファイルを削除します
  4. 変更したSQLを新しいデータベースにロードします。 sqlite3 my_db.db < my_db.sql
  5. ??? &利益

1

手順:

  1. ENVから現在のDjangoをアンインストールします。フォルダ「anaconda3 / envs / yourenv / lib / python3.7 / site-packages / Djangoallversions ..」を削除するだけです。*注:Anacondaユーザーの場合のみ、他のユーザーはENVからパッケージをアンインストールする方法を理解する必要があります。

  2. Github.com/django/djangoにアクセスします。

  3. リポジトリをzipファイルとしてダウンロードします。

  4. zipを抽出します。

  5. ENVに切り替えます。

  6. 解凍したフォルダを入力します。

  7. 「pythonsetup.pyinstall」を実行し、Djangoをインストールします。

  8. 以前のdb.sqlite3ファイルを削除します。次に、移行を再度適用して、新しいdb.sqlite3ファイルを作成します。

*注:以前のdbfileを修正し、データの損失を防ぐ方法がわかりません。知っているなら教えてください。

  1. サーバーを実行します。

おめでとうございます!今は問題なく動作します。

Djangoの公式リリースから1月に最新のdjangoにアップデートします。


1

2つのsqliteデータベースとカスタムデータベースルーターがあることを除いて、同じ問題が発生しました。Djangoを1.11.20にダウングレードすることで、データベースを再作成する必要がなく、なんとか機能させることができました。


1

上記の回答でこのエラーを解決できない場合、「main」という名前でアプリを作成した場合、このエラーは同じアプリ名の問題の原因で発生する可能性があります。そのため、アプリ名「main」を別の名前に変更してみてください。



1

モデルのいくつかを変更することで問題を解決しました。名前付きプロジェクトと名前付きプロジェクトが1つずつありました。データベーステーブルが混乱し、このエラーが発生しました。


1

私は以下を使用してこの問題を解決しました:

1)db.sqlit3を削除します

2)アプリのディレクトリはpycache内のすべてを削除します

3)manage.py makemigrations、manage.pymigrate、manage.py createsuperuser、そしてmanage.pyrunserver。


1

私は同じ問題を抱えていて、以下を行うことでそれを修正しました:

1)最新djangoバージョンを入手する

2)最新SQL Liteバージョンを入手する

3)db.sqlite3プロジェクトからファイルを削除します

4)小さな変更を加えますmodels.py(たとえば、フィールドのサイズを変更します)

5)&をdb.sqllite3実行して新しいファイルを生成しますmakemigrationsmigrate commands

6)新しく作成したdb.sqllite3ファイルをにインポートしますSQL Lite


1

djangoをインストール/2.2バージョンにダウングレードしました。これによりdjango3.xが削除されました。

pip install django==2.2

次に、db.sqliteファイルを削除してから

私は試した

python manage.py makemigrations,
python manage.py migrate 
python manage.py creatingsuperuser. 

1

djangoバージョンの更新:pip install django --upgrade then

./manage.py makemigration
./manage.py migrate
./manage.py runserver


0

コマンドラインで実行したことは4つだけで、修正されました。

  1. ctrl + c (サーバーの停止)
  2. py manage.py makemigrations
  3. py manage.py migrate
  4. py manage.py runserver (サーバーの起動)

1
問題は、すでに2.1.5ポイントリリース(リリースノートの「バグ修正セッションでチケット番号#29182)を用いて固定されています。 docs.djangoproject.com/en/2.1/releases/2.1.5/#bugfixes
northernSage

0

django-2.2.7
これは私のために働いた-

1)db.sqlite3を削除します
2)各アプリ内のmigrationsフォルダー内で、__init__。py以外のすべてを削除します。
3)各アプリ内で、__ pycache__フォルダーを削除します。

すべてのアプリで実行する必要があるのか​​、関連するアプリだけで実行する必要があるのか​​はわかりませんが、これでうまくいきました。


migrationsこの種の問題を解決するには、ファイルを削除することをお勧めします。@rajvijay
クジラ52Hz20年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.