2013-09-21 6 views
0

Итак, я создаю приложение django, и я установил южное приложение в разделе «INSTALLED_APPS» в моих settings.py. Я использовалdjango south migration не обновляет базу данных

python manage.py schemamigration myapp --auto 
python manage.py migrate testapp 

команды и они отлично работали до недавнего времени, внесли изменения в мою модель.

class Users(models.Model): 
    days = (('1', '1'), ('2', '2'),) 
    day = models.CharField(verbose_name='', max_length=1, default='Day') 

сейчас, как вы можете видеть, я сделал здесь две ошибки. Во-первых, я задал значение по умолчанию «День», когда оно не является даже опцией в переменной «days». Я также сказал, что max_length = 1 и по умолчанию 3 цифры. После запуска schemamigration и мигрировать команды, он сказал, дал ошибку говоря

DatabaseError: value too long for type character varying(2) 

, а затем, когда я сделал

python manage.py runserver 

это сделал дать выбор, кроме «Дня» не было по умолчанию, по умолчанию был '1'. Затем я добавил «День», как выбор и я изменил max_length = 3, только теперь, когда я

python manage.py schemamigration myapp --auto 
python manage.py migrate myapp 

он все еще дающую DatabaseError. Я попробовал еще раз, и когда я сделал команду schemamigration, он сказал, что никаких изменений не было, а затем, когда я попытался выполнить команду migrate, он все равно дает ошибку базы данных.

Я думал запустить SQL-команду из командной строки, чтобы обновить максимальную длину «дней» до 3, но когда я просмотрел базу данных в PostgreSQL (базу данных, связанную с моим приложением), она говорит, что нет « дней.

У кого-нибудь есть идея, как это исправить?

+0

Вы можете показать код источника, включая часть выбора, которую вы используете после внесения изменений? Это может помочь. И вы можете проверить свою базу данных (например, используя sqliteman или ваш предпочтительный инструмент) и проверить, что такое таблица. – OBu

ответ

0

В базе данных проверьте таблицу south_migration_history.

Возможно, у вас уже есть запись для конкретного приложения и для миграции.

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

Если у вас уже есть запись для вашей миграции в south_migration_history, удалите ее и снова запустите команду миграции.

Попробуйте.

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