当我将日期保存为字符串之前,有一个date
字段。但现在我将字段从charfield更改为datetimefield并删除了之前的所有数据。
date = models.DateTimeField(default=timezone.now)
Localy它工作正常,但在生产中,它会在尝试迁移时引发跟随错误。我删除了列,模型,评论和取消注释,删除并再次创建了字段,返回到以前的迁移并再次迁移,但所有这些都没有帮助。
django.db.utils.ProgrammingError: column "date" cannot be cast automatically to type timestamp with time zone
HINT: You might need to specify "USING date::timestamp with time zone".
如何正确解决问题?使用django 1.8,python 2.7和postgres
答案 0 :(得分:0)
在postgres shell中运行:
ALTER TABLE table_name ALTER COLUMN col_name TYPE timestamp with time zone USING col_name::timestamp with time zone
答案 1 :(得分:0)
对于在尝试将整数列转换为时间戳时在Google上发现此问题的任何人:
ALTER TABLE my_table
ALTER COLUMN my_column
TYPE timestamp with time zone
USING to_timestamp(my_column);
答案 2 :(得分:0)
如果您的列不能完全与新列的原始类型转换,请考虑删除旧列并创建一个新列:
如果您的字段很少,这很好用,但是如果要转换的字段很多,我建议为此编写一个特定的数据迁移