2016-07-25 6 views
2

OK、私は困惑しています。私はすべてを試したと思う。django.db.utils.OperationalError私は何を試しても

私はアプリのmodels.pyでモデルを作成しましたが、既存のモデルにはさらにいくつかのフィールドを追加しました(すべてデフォルト値)。その後、私はmakemigrationsを実行しました。結果:

$ python3 manage.py makemigrations 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/sqlite3/base.py", line 323, in execute 
    return Database.Cursor.execute(self, query, params) 
sqlite3.OperationalError: no such column: myapp_MyExistingModel.first_new_field 

The above exception was the direct cause of the following exception: 

Traceback (most recent call last): 
    File "manage.py", line 14, in <module> 
    execute_from_command_line(sys.argv) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/management/__init__.py", line 353, in execute_from_command_line 
    utility.execute() 
    File "/usr/local/lib/python3.5/dist-packages/django/core/management/__init__.py", line 345, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/management/base.py", line 348, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/management/base.py", line 398, in execute 
    self.check() 
    File "/usr/local/lib/python3.5/dist-packages/django/core/management/base.py", line 426, in check 
    include_deployment_checks=include_deployment_checks, 
    File "/usr/local/lib/python3.5/dist-packages/django/core/checks/registry.py", line 75, in run_checks 
    new_errors = check(app_configs=app_configs) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/checks/urls.py", line 13, in check_url_config 
    return check_resolver(resolver) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/checks/urls.py", line 23, in check_resolver 
    for pattern in resolver.url_patterns: 
    File "/usr/local/lib/python3.5/dist-packages/django/utils/functional.py", line 33, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/urlresolvers.py", line 417, in url_patterns 
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
    File "/usr/local/lib/python3.5/dist-packages/django/utils/functional.py", line 33, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/urlresolvers.py", line 410, in urlconf_module 
    return import_module(self.urlconf_name) 
    File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module 
    return _bootstrap._gcd_import(name[level:], package, level) 
    File "<frozen importlib._bootstrap>", line 986, in _gcd_import 
    File "<frozen importlib._bootstrap>", line 969, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked 
    File "<frozen importlib._bootstrap>", line 673, in _load_unlocked 
    File "<frozen importlib._bootstrap_external>", line 665, in exec_module 
    File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed 
    File "/path/to/myproject/myproject/urls.py", line 49, in <module> 
    url(r'^someurl/', include('myapp.urls')), 
    File "/usr/local/lib/python3.5/dist-packages/django/conf/urls/__init__.py", line 52, in include 
    urlconf_module = import_module(urlconf_module) 
    File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module 
    return _bootstrap._gcd_import(name[level:], package, level) 
    File "<frozen importlib._bootstrap>", line 986, in _gcd_import 
    File "<frozen importlib._bootstrap>", line 969, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked 
    File "<frozen importlib._bootstrap>", line 673, in _load_unlocked 
    File "<frozen importlib._bootstrap_external>", line 665, in exec_module 
    File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed 
    File "/path/to/myproject/myapp/urls.py", line 2, in <module> 
    from . import views 
    File "/path/to/myproject/myapp/views.py", line 8, in <module> 
    existing_model = MyExistingModel.objects.all()[0] 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 297, in __getitem__ 
    return list(qs)[0] 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 258, in __iter__ 
    self._fetch_all() 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 1074, in _fetch_all 
    self._result_cache = list(self.iterator()) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 52, in __iter__ 
    results = compiler.execute_sql() 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/sql/compiler.py", line 848, in execute_sql 
    cursor.execute(sql, params) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/utils.py", line 79, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/utils.py", line 95, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/usr/local/lib/python3.5/dist-packages/django/utils/six.py", line 685, in reraise 
    raise value.with_traceback(tb) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/sqlite3/base.py", line 323, in execute 
     return Database.Cursor.execute(self, query, params) 
    django.db.utils.OperationalError: no such column: myapp_MyExistingModel.first_new_field 

それが重要ならば、私はメザニンCMSとMyExistingModelを使用していますが、そのPageクラスを拡張したものです。 1つのインスタンスしかありません。

だからここで私は次の試みたものです:

  1. manage.py migrate --fake
  2. manage.py flush
  3. ので、新しいものが

を作成することでしょう私のデータベースの名前を変更するこれらのすべては、同じトレースバックを投げました。私はアプリの最後の移行に行きました。それは私の新しいモデルのためのAddModelと私が名前を変更した古いモデルのフィールドのRemoveFieldを含んでいましたが、私が作成した新しいフィールドのためのAddFieldはありません。そこで私はそれらを手動で移行ファイルに追加し、manage.py migrate --fakeを再試行しました。同じトレースバック。私は他のすべてのコマンドも試しました。同じトレースバック。

最後に、すべてのアプリの移行を削除しました。ちょうど__init__.pyのままです。データベースを再作成するように名前を変更しました。私はflushmakemigrations、およびmigrate--fakeありとなし)を再試行しました。これらのすべては、このトレースバックの結果:この時点で

Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/sqlite3/base.py", line 323, in execute 
    return Database.Cursor.execute(self, query, params) 
sqlite3.OperationalError: no such table: myapp_MyExistingModel 

The above exception was the direct cause of the following exception: 

Traceback (most recent call last): 
    File "manage.py", line 14, in <module> 
    execute_from_command_line(sys.argv) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/management/__init__.py", line 353, in execute_from_command_line 
    utility.execute() 
    File "/usr/local/lib/python3.5/dist-packages/django/core/management/__init__.py", line 345, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/management/base.py", line 348, in run_from_argv 
    self.execute(*args, **cmd_options) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/management/base.py", line 398, in execute 
    self.check() 
    File "/usr/local/lib/python3.5/dist-packages/django/core/management/base.py", line 426, in check 
    include_deployment_checks=include_deployment_checks, 
    File "/usr/local/lib/python3.5/dist-packages/django/core/checks/registry.py", line 75, in run_checks 
    new_errors = check(app_configs=app_configs) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/checks/urls.py", line 13, in check_url_config 
    return check_resolver(resolver) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/checks/urls.py", line 23, in check_resolver 
    for pattern in resolver.url_patterns: 
    File "/usr/local/lib/python3.5/dist-packages/django/utils/functional.py", line 33, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/urlresolvers.py", line 417, in url_patterns 
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
    File "/usr/local/lib/python3.5/dist-packages/django/utils/functional.py", line 33, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/usr/local/lib/python3.5/dist-packages/django/core/urlresolvers.py", line 410, in urlconf_module 
    return import_module(self.urlconf_name) 
    File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module 
    return _bootstrap._gcd_import(name[level:], package, level) 
    File "<frozen importlib._bootstrap>", line 986, in _gcd_import 
    File "<frozen importlib._bootstrap>", line 969, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked 
    File "<frozen importlib._bootstrap>", line 673, in _load_unlocked 
    File "<frozen importlib._bootstrap_external>", line 665, in exec_module 
    File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed 
    File "/path/to/myproject/myproject/urls.py", line 49, in <module> 
    url(r'^someurl/', include('myapp.urls')), 
    File "/usr/local/lib/python3.5/dist-packages/django/conf/urls/__init__.py", line 52, in include 
    urlconf_module = import_module(urlconf_module) 
    File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module 
    return _bootstrap._gcd_import(name[level:], package, level) 
    File "<frozen importlib._bootstrap>", line 986, in _gcd_import 
    File "<frozen importlib._bootstrap>", line 969, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked 
    File "<frozen importlib._bootstrap>", line 673, in _load_unlocked 
    File "<frozen importlib._bootstrap_external>", line 665, in exec_module 
    File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed 
    File "/path/to/myproject/myapp/urls.py", line 2, in <module> 
    from . import views 
    File "/path/to/myproject/myapp/views.py", line 8, in <module> 
    existing_model = MyExistingModel.objects.all()[0] 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 297, in __getitem__ 
    return list(qs)[0] 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 258, in __iter__ 
    self._fetch_all() 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 1074, in _fetch_all 
    self._result_cache = list(self.iterator()) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/query.py", line 52, in __iter__ 
    results = compiler.execute_sql() 
    File "/usr/local/lib/python3.5/dist-packages/django/db/models/sql/compiler.py", line 848, in execute_sql 
    cursor.execute(sql, params) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/utils.py", line 79, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/utils.py", line 95, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/usr/local/lib/python3.5/dist-packages/django/utils/six.py", line 685, in reraise 
    raise value.with_traceback(tb) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python3.5/dist-packages/django/db/backends/sqlite3/base.py", line 323, in execute 
    return Database.Cursor.execute(self, query, params) 
django.db.utils.OperationalError: no such table: myapp_MyExistingModel 

、私は何でもstart overを除き、次の試行する見当がつかない。どんな提案も感謝しています。

+0

マイグレーション - なぜですか?これでテーブルが作成されず、おそらくあなたはこれを見ています。 – e4c5

+0

これは、データベースと移行の間に矛盾があったときに私を救った魔法です。マイグレーションファイルを手作業で編集した後を除いて、 'マイグレーション 'が' makemigrations'より前に動作するとは思わない。私はちょうど '--fake'を使わずに' migrate'を試みましたが、それもうまくいきませんでした。それを反映するように質問を編集します。 – Keith

+0

偽造が私を救った場所は次のとおりです。https://groups.google.com/d/msg/mezzanine-users/wp7TAK2L_Dg/OZXKfHRPAwAJ – Keith

答えて

2

私はそれを理解しました。教訓:最後の行だけでなく、スタックトレース全体を読む。この場合、攻撃ラインは私のviews.pyにあった:

File "/path/to/myproject/myapp/views.py", line 8, in <module> 
    existing_model = MyExistingModel.objects.all()[0] 

私が言ったように、MyExistingModelはインスタンスを1つだけ持っており、この行がviews.pyコードで使用するためのローカル変数existing_modelにそのインスタンスを設定します。

私はまだmakemigrationsviews.pyを実行する必要がある理由は分かりません。しかし、明らかにそうです!その際、MyExistingModelmodels.pyの新しいフィールドからインポートされました。しかし、これらのフィールドはまだ移行されていませんでした。したがって、OperationalError。

+1

_ "コメントは非常に高く評価されました" _ - コメントは拡張された議論。 –

+0

それは本当です。OK、私はこのディスカッションを[redditのこの投稿](https://www.reddit.com/r/django/comments/4ut03i/makemigrations_sticking_its_nose_in_my_views/)に移しました。 – Keith

関連する問題