2015-03-04 2 views
2

Я не могу понять, почему мои макетирования не работают с sqlite. Когда я добавляю столбец Userphoto и идти, чтобы сделать миграцию, я получаю сообщение об ошибке «таблица categories_Category не имеет столбец с именем Userphoto»Django 1.7 makemigrations не работает - нет столбца с именем

питона 3.4, Джанго 1.7, только добавил Userphoto

class Category(models.Model): 
    username = models.CharField(max_length=15) 
    realname = models.CharField(max_length=20) 
    tweets = models.CharField(max_length=1000) 
    tweettime = models.DateTimeField(max_length=30) 
    tweetidnum = models.CharField(max_length=30) 
    userphoto = models.CharField(max_length=100) 

и получить ошибку ниже:

File "/Users/xxxxxxxxx/anaconda/envs/tg/lib/python3.4/site-packages/django/db/backends/sqlite3/base.py", line 485, in execute 
    return Database.Cursor.execute(self, query, params) 
     django.db.utils.OperationalError: table categories_category has no column named userphoto 

это также похоже, как будто это может быть просто вопрос sqlite3? Смогу ли я избежать этого, перейдя на мой сервер webhosts?

EDIT: Полный отслеживающий по запросу

(tg)boo!:tg spencertachick$ python manage.py makemigrations 
    /Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/models/fields/__init__.py:1282: RuntimeWarning: DateTimeField Category.tweettime received a naive datetime (2015-03-04 16:01:00) while time zone support is active. 
    RuntimeWarning) 

Traceback (most recent call last): 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/backends/utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/backends/sqlite3/base.py", line 485, in execute 
    return Database.Cursor.execute(self, query, params) 
    sqlite3.OperationalError: table categories_category has no column named userphoto 

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

Traceback (most recent call last): 
     File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line 
    utility.execute() 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/core/management/__init__.py", line 354, in execute 
    django.setup() 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/__init__.py", line 21, in setup 
    apps.populate(settings.INSTALLED_APPS) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/apps/registry.py", line 108, in populate 
    app_config.import_models(all_models) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/apps/config.py", line 202, in import_models 
    self.models_module = import_module(models_module_name) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/importlib/__init__.py", line 109, in import_module 
    return _bootstrap._gcd_import(name[level:], package, level) 
    File "<frozen importlib._bootstrap>", line 2254, in _gcd_import 
    File "<frozen importlib._bootstrap>", line 2237, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 2226, in _find_and_load_unlocked 
    File "<frozen importlib._bootstrap>", line 1200, in _load_unlocked 
    File "<frozen importlib._bootstrap>", line 1129, in _exec 
    File "<frozen importlib._bootstrap>", line 1471, in exec_module 
    File "<frozen importlib._bootstrap>", line 321, in _call_with_frames_removed 
    File "/Users/spencertachick/anaconda/envs/tg/tg/categories/models.py", line 54, in <module> 
    tweetidnum=user_timeline[x]['id_str']) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/models/manager.py", line 92, in manager_method 
    return getattr(self.get_queryset(), name)(*args, **kwargs) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/models/query.py", line 372, in create 
    obj.save(force_insert=True, using=self.db) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/models/base.py", line 589, in save 
    force_update=force_update, update_fields=update_fields) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/models/base.py", line 617, in save_base 
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/models/base.py", line 698, in _save_table 
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/models/base.py", line 731, in _do_insert 
    using=using, raw=raw) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/models/manager.py", line 92, in manager_method 
    return getattr(self.get_queryset(), name)(*args, **kwargs) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/models/query.py", line 921, in _insert 
    return query.get_compiler(using=using).execute_sql(return_id) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 920, in execute_sql 
    cursor.execute(sql, params) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/backends/utils.py", line 81, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/backends/utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/utils.py", line 94, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/utils/six.py", line 658, in reraise 
    raise value.with_traceback(tb) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/backends/utils.py", line 65, in execute 
    return self.cursor.execute(sql, params) 
    File "/Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/backends/sqlite3/base.py", line 485, in execute 
    return Database.Cursor.execute(self, query, params) 
django.db.utils.OperationalError: table categories_category has no column named userphoto 
+0

Вы синхронизировали базу данных, прежде чем совершать первые миграции? В этом случае удалите поле userphoto, создайте начальные миграции и добавьте его снова. Когда вы создаете первую миграцию, база данных должна соответствовать модели. – knbk

+0

Я запускал makemigrations и мигрировал снова, просто удостоверяюсь и получил «никаких изменений для применения». Затем я попробовал снова и получил ту же ошибку. Я полностью удалил файл базы данных и попытался выполнить миграцию и получил файл «Файл» /Users/spencertachick/anaconda/envs/tg/lib/python3.4/site-packages/django/db/backends/sqlite3/base.py », строка 485, в исполнении return Database.Cursor.execute (self, query, params) django.db.utils.OperationalError: нет такой таблицы: categories_category. " Значит, он даже не может найти модель, когда я собираюсь создать новую базу данных? – stachick

+0

Какие файлы находятся в вашей папке 'categories/migrations /'? Какой код находится в '0001_initial.py'? – knbk

ответ

2

линии 54 в категории/models.py:

tweetidnum=user_timeline[x]['id_str']) 

То есть, по-видимому каким-то образом пытается создать экземпляр Category и сохранить его при импорте модуля. Это предотвращает запуск миграции вообще, так как неперехваченное исключение возникает до того, как миграция получит шанс на запуск.

Вам нужно будет предоставить больше кода, если вы хотите получить точную причину, но эта линия является виновником. Я подозреваю, что это часть многострочного create.

+0

большое спасибо ... немного не понимаю. В нижней части файла models.py есть код, который обновляет твиты из twitter api, когда я запускаю сервер. Я могу прокомментировать это для макетирования, и он отлично поработал. Я нахожусь в том, что сельдерей выполняет эти задачи для производства. Я прошу прощения за то, что не дал вам достаточно кода с места в карьер, я не хотел быть неприятным и вставлял весь мой проект. – stachick

2

Ваши Миграции не были применены правильно.

Сделайте python manage.py migrate -l categories. Он должен указать применимые миграции в этом приложении. Посмотрите на последний (или тот, который вы думаете user_photo должен был быть добавлен) и посмотреть файл.

После того, как вы определили, какая миграция должна добавить поле, выполните python manage.py migrate polls $prev, где $ prev - это предыдущая миграция в списке и python manage.py migrate polls $migration, где $ migration - это добавление этого поля.

Если это не сработает, я бы сказал, что самый быстрый подход без потери данных создает Колонном себя ALTER TABLE categories ADD COLUMN "userphoto" varchar(100) NOT NULL;

+0

эй @argaen, я получаю 'manage.py: ошибка: нет такой опции: -1'. Кроме того, я не забочусь о потере данных, есть ли способ вернуться и по существу сделать начальную миграцию, которую я еще не пробовал? – stachick

+0

О, я вижу, а затем просто удалите ваш файл базы данных sqlite. Также удалите папку миграций внутри вашего приложения. Затем выполните 'python manage.py makemigrations' и' python manage.py migrate'. Если вы хотите добавить суперпользователя, создайте 'python manage.py createuperuser'. PS: опция -l, а не -1 =). Nvm: просто увидел, что он зафиксирован ^^. – argaen

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