Django postgre迁移错误

时间:2015-08-09 18:26:27

标签: python django django-models

我将数据库后端从sqlite3更改为postgre。当我尝试运行迁移时出现错误

MacBook-Pro-Oleg:avtofarm okorablev$ python3 manage.py migrate

执行的操作:   同步未迁移的应用程序:消息,avtofarm,smart_selects,静态文件,缩略图   应用所有迁移:contenttypes,admin,callboard,auth,sessions 无需迁移即可同步应用:   创建表格......     运行延迟的SQL ...   安装自定义SQL ... 正在运行迁移:   渲染模型状态...完成   应用callboard.0004_auto_20150701_1609 ... Traceback(最近一次调用最后一次):   文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/backends/utils.py”,第64行,执行     return self.cursor.execute(sql,params) psycopg2.ProgrammingError:列“manufdate”无法自动转换为键入日期 提示:指定USING表达式以执行转换。

上述异常是导致以下异常的直接原因:

  

Traceback(最近一次调用最后一次):文件“manage.py”,第10行,in          execute_from_command_line(sys.argv)文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/management/init.py”,   第338行,在execute_from_command_line中       utility.execute()文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/management/init.py”,   第330行,执行中       self.fetch_command(子命令).run_from_argv(self.argv)文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/management/base.py”,   第393行,在run_from_argv中       self.execute(* args,** cmd_options)文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/management/base.py”,   第444行,执行中       output = self.handle(* args,** options)文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/management/commands/migrate.py” ,   第221行,在句柄中       executor.migrate(targets,plan,fake = fake,fake_initial = fake_initial)文件   “/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/migrations/executor.py”   第110行,在迁移中       self.apply_migration(states [migration],migration,fake = fake,fake_initial = fake_initial)File   “/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/migrations/executor.py”   第148行,在apply_migration中       state = migration.apply(state,schema_editor)文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/migrations/migration.py”,   第115行,申请中       operation.database_forwards(self.app_label,schema_editor,old_state,project_state)文件   “/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/migrations/operations/fields.py”   第201行,在database_forwards中       schema_editor.alter_field(from_model,from_field,to_field)文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/backends/base/schema.py”,   第484行,在alter_field中       old_db_params,new_db_params,strict)文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/backends/base/schema.py”,   第636行,在_alter_field中       params,文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/backends/base/schema.py”,   第111行,执行中       cursor.execute(sql,params)文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/backends/utils.py”,   第79行,执行中       return super(CursorDebugWrapper,self).execute(sql,params)File“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/backends/utils.py”,   第64行,执行中       return self.cursor.execute(sql,params)File“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/utils.py”,   第97行,在退出       six.reraise(dj_exc_type,dj_exc_value,traceback)文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/utils/six.py”,   第658行,重新加入       提高value.with_traceback(tb)文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/backends/utils.py”,   第64行,执行中       return self.cursor.execute(sql,params)django.db.utils.ProgrammingError:列“manufdate”无法强制转换   自动输入日期提示:指定一个USING表达式   执行转换。

模型

class Zip(models.Model):
category = models.ForeignKey(Category,null=True,verbose_name='Категория')
subcategory = ChainedForeignKey(SubCategory,chained_field="category",
    chained_model_field="category",
    show_all=False,
    auto_choose=True,verbose_name='Подкатегория')
type = models.ForeignKey(Type,verbose_name='Состояние')
zipgroup = models.ForeignKey(ZipGroup,null=True,verbose_name='Группа запчастей')
ziptype = models.ForeignKey(ZipType,null=True,verbose_name='Вид запчасти')
cartype = models.ForeignKey(CarType,null=True,verbose_name='Тип авто')
carmodel = models.ForeignKey(CarModel,null=True,verbose_name='Модель транспорта')
carbodytype = models.ForeignKey(CarBodyType,null=True,verbose_name='Тип кузова')
catalognumber = models.CharField(max_length=100,null=True,blank=True,verbose_name='Номер по каталогу')
manufdate = models.CharField(max_length=4,null=True,verbose_name='Год выпуска')
title = models.CharField(max_length=100,verbose_name='Заголовок объявления')
description = models.TextField(null=True,verbose_name='Описание')
price = models.IntegerField(verbose_name='Цена')
user = models.ForeignKey(User,verbose_name='Пользователь')
creation_date = models.DateTimeField('date published')
is_sell = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
likes = models.IntegerField(default=0)

2 个答案:

答案 0 :(得分:0)

查看您的迁移代码(适用于包含Zip模型的应用程序)。看起来迁移存在一些问题,因为您收到有关日期转换的错误,而在当前模型中,您有CharField列的manufdate类型。

答案 1 :(得分:-2)

我删除数据库后,问题解决了,制作了新的数据库,又一次做了迁移和迁移。但我认为应该是另一种如何在不删除数据库的情况下更好地决定这个问题的方法