2015-03-27 3 views
4

Я создаю проект django на новом удаленном сервере. При попытке установки базы данных работают `питон manage.py мигрирует», чтобы запустить все миграции, которые я получаю следующее сообщение об ошибке:Ошибка программирования Django 1146 таблица

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 385, in execute_from_command_line 
    utility.execute() 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 354, in execute 
    django.setup() 
    File "/usr/local/lib/python2.7/dist-packages/django/__init__.py", line 21, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/usr/local/lib/python2.7/dist-packages/django/apps/registry.py", line 115, in populate 
    app_config.ready() 
    File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/apps.py", line 22, in ready 
    self.module.autodiscover() 
    File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/__init__.py", line 23, in autodiscover 
    autodiscover_modules('admin', register_to=site) 
    File "/usr/local/lib/python2.7/dist-packages/django/utils/module_loading.py", line 74, in autodiscover_modules 
    import_module('%s.%s' % (app_config.name, module_to_search)) 
    File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/home/django/kwp/app/admin.py", line 3, in <module> 
    from app.views import genCustCode 
    File "/home/django/kwp/app/views.py", line 6, in <module> 
    from app.forms import * 
    File "/home/django/kwp/app/forms.py", line 466, in <module> 
    tag_choices = ((obj.id, obj.tag) for obj in BlogTag.objects.all()) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 141, in __iter__ 
    self._fetch_all() 
    File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 966, in _fetch_all 
    self._result_cache = list(self.iterator()) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 265, in iterator 
    for row in compiler.results_iter(): 
    File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py", line 700, in results_iter 
    for rows in self.execute_sql(MULTI): 
    File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py", line 786, in execute_sql 
    cursor.execute(sql, params) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py", line 81, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 94, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py", line 128, in execute 
    return self.cursor.execute(query, args) 
    File "/usr/local/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 205, in execute 
    self.errorhandler(self, exc, value) 
    File "/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler 
    raise errorclass, errorvalue 
django.db.utils.ProgrammingError: (1146, "Table 'kwp_db_prod.app_blogtag' doesn't exist") 

я не уверен, что проблема, но это выглядит как мой forms.py становится называется и ищет таблицу BlogTag до того, как эта таблица существует. Почему это происходит при выполнении миграции? Любой способ обойти это?

Благодарим за помощь.

ответ

14

Там проблема в том, что ваш код написан, особенно это строка:

tag_choices = ((obj.id, obj.tag) for obj in BlogTag.objects.all()) 

В forms.py: вы не должны использовать фильтрацию QuerySet в модуле тела, так как он выполняется, когда нагрузка модуля , лучше называть его функцией.

Вот почему ваша миграция не может быть применена: вы пытаетесь получить данные из базы данных, используя QuerySet, во время модуля (forms.py) нагрузки, но таблица не существует до перенастройки :)

Попробуйте прокомментируйте эту строку и попробуйте снова применить свои миграции.

Но помните, что это плохая практика, если есть другие линии, как этот, вы бы лучше прокомментировать их применять миграцию, и лучше, перемещать их в функции

+3

Вы бы иметь какие-либо рекомендации в отношении альтернативных реализаций? Пэчворк [в настоящее время имеет эту проблему] (https://github.com/getpatchwork/patchwork/blob/5b0b0b74/patchwork/forms.py#L216), и я бы хотел его решить – stephenfin

Смежные вопросы