我将DB后端从sqlite3更改为postgre。当我试图运行迁移时,我有一个错误
MacBook-Pro-Oleg:avtofarm okorablev$ python3 manage.py migrate要执行的操作:同步未迁移的应用程序:消息、avtofarm、smart_selects、静态文件、缩略图应用所有迁移:内容类型、管理、调用板、auth、不迁移的会话同步应用程序:创建表.运行延迟SQL..。安装自定义SQL..。运行迁移:呈现模型状态..。完成应用"/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/backends/utils.py",(最近一次调用):callboard.0004_auto_20150701_1609...Traceback第64行,在execute返回self.cursor.execute(sql,params)内核。psycopg2.ProgrammingError:列"manufdate“不能自动转换为输入日期提示:指定一个使用表达式来执行转换。
上述异常是导致以下异常的直接原因:
追溯(最近一次调用):文件"manage.py",第10行,在execute_from_command_line(sys.argv) execute_from_command_line(sys.argv)文件第338行中在“执行"/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/management/init.py",文件”( self.fetch_command(subcommand).run_from_argv(self.argv) utility.execute() execute_from_command_line utility.execute()execute_from_command_line utility.execute)第330行中,在“执行self.fetch_command(subcommand).run_from_argv(self.argv)文件”"/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/management/base.py",行393中在"/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/management/base.py",self.execute(*args,**cmd_options) run_from_argv self.execute第444行中,在execute output = self.handle(*args,**options)文件"/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/core/management/commands/migrate.py",第221行中,在"/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/migrations/executor.py",executor.migrate(目标、计划、fake=fake、fake_initial=fake_initial)文件第110行中,在迁移self.apply_migration(状态迁移,迁移,fake=fake,fake_initial=fake_initial)文件第148行中,在apply_migration state = migration.apply(state,schema_editor) File operation.database_forwards第115行中,在apply operation.database_forwards(self.app_label,schema_editor,old_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行中在文件"/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/backends/base/schema.py",第636行,在alter_field old_db_params,new_db_params中,在_alter_field params中,在文件old_db_params第111行中,在execute cursor.execute(sql,( params)文件"/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/backends/utils.py",第79行,在执行返回超级(CursorDebugWrapper,self).execute(sql,params)文件"/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/django/db/backends/utils.py",第64行中,在执行返回self.cursor.execute(sql,文件"/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中,在reraise value.with_traceback(tb) File value.with_traceback第64行中,执行返回self.cursor.execute(sql,params) django.db.utils.ProgrammingError:列"manufdate“不能自动转换为键入日期提示:指定一个使用表达式来执行转换。
模型
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)发布于 2015-08-11 04:59:00
在我删除了数据库,创建了新的数据库之后,这个问题得到了解决,并再次进行了迁移和迁移。但是,我认为应该是另一种方法,您可以在不删除数据库的情况下更好地解决这个问题。
发布于 2015-08-09 19:10:45
查看一下迁移代码(用于包含Zip模型的应用程序)。看起来迁移存在一些问题,因为当在当前模型中有CharField类型用于manufdate列时,会收到有关日期转换的错误。
https://stackoverflow.com/questions/31907469
复制相似问题