Django IntegrityError:没有默认值

时间:2016-08-20 09:37:18

标签: python mysql django django-orm

我需要运行更长的SQL查询来将数据从一个表迁移到另一个表。在本周我迁移到Django 1.9.2和Python 3.5时,它一直运行良好。

问题是该表有一个字段'last_update',默认为NULL。表定义是

last_update = models.DateTimeField("last updated",null=True, auto_now_add=False, auto_now=True)

我还检查了MySQL Workbench,表确实设置为允许该字段为NULL,默认为NULL。

查询在大约30分钟后崩溃,并显示错误消息:

django.db.utils.IntegrityError: (1364, "Field 'last_update' doesn't have a default value")

非常烦人!如何在该表中插入行?

根据请求,这是表定义:

CREATE TABLE `google_pla_plaproducts` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `product_code` varchar(55) CHARACTER SET utf8 NOT NULL,
  `min_bid` decimal(20,4) NOT NULL,
  `current_bid` decimal(20,4) NOT NULL,
  `max_bid` decimal(20,4) NOT NULL,
  `creation_date` datetime(6),
  `last_update` datetime(6) DEFAULT NULL,
  `status_change` datetime(6) DEFAULT NULL,
  `starting_bid` decimal(20,4) NOT NULL,
  `adgroup_id` int(11) NOT NULL,
  `status_id` int(11) NOT NULL,
  `product_price` decimal(20,4) NOT NULL,
  PRIMARY KEY (`id`,`product_code`,`adgroup_id`),
  KEY `google_p_adgroup_id_3b7c9d4ecddd04ba_fk_google_pla_plaadgroup_id` (`adgroup_id`),
  KEY `google_pla_plaprod_status_id_2f8113a5ef0dd021_fk_globs_status_id` (`status_id`),
  KEY `idx_prod_code` (`product_code`),
  CONSTRAINT `google_p_adgroup_id_3b7c9d4ecddd04ba_fk_google_pla_plaadgroup_id` FOREIGN KEY (`adgroup_id`) REFERENCES `google_pla_plaadgroup` (`id`),
  CONSTRAINT `google_pla_plaprod_status_id_2f8113a5ef0dd021_fk_globs_status_id` FOREIGN KEY (`status_id`) REFERENCES `globs_status` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=88949 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

2 个答案:

答案 0 :(得分:0)

updated = models.DateTimeField(default=None, auto_now=True, auto_now_add=False)

这应该有效。 我以前用过它,它对我来说很好。

答案 1 :(得分:0)

我最后几次修改了表格。我没有尝试过Rohit的建议,默认=无。在使用多个数据库迁移后,它再次开始工作。