我有一个表单,用户可以在其中插入名称/地址等信息。创建和修改条目的时间带有时间戳。 “修改的”字段曾经只默认为0000-00-00,但最近却导致了错误
Array
(
[0] => Invalid query: Field 'modified' doesn't have a default value
)
我环顾四周,有人建议将修改后的列设置为“ NULL”,但数据库不允许这样做
我怀疑问题是,当用户单击“提交”时,它没有将任何内容提交到“修改”列中,因为我收到的第二条错误消息是
INSERT INTO stores (name,cat_id,address,telephone,email,website,description,embed_video,default_media,latitude,longitude,created) VALUES('bsg',',29,','4750 abc dr','11212121212','abc@gmail.com','','drrrr','','image','44.7847745','-93.19667930000003','2019-06-13 15:28:39')
请注意,被插入的参数之一未列出'modified'属性。我猜这就是问题所在,但idk可以在哪里解决。
我检查了我的settings.php,validate.php,config.inc.php,但到目前为止,我所看到的任何内容似乎都无法解决问题
答案 0 :(得分:0)
有多种方法可以解决您的问题,其中一些方法比这种方法更好/更有效,但是这种方法与您在问题中提供的信息紧密匹配。
在您的数据库中
配置modified
列,以便:
NULL
作为值。 (即取消设置NOT-NULL
(如果之前已设置)0000-00-00
(可选)在您的插入语句中的代码中:
modified
或NULL
的{{1}}列明确指定一个值答案 1 :(得分:0)
解释Alex的答案并使用一些代码示例,您可能想让该字段接受空值:
ALTER TABLE `stores` CHANGE `modified` `modified` DATE NULL;
或者仅具有默认值'0000-00-00'(这是以前的行为,这是一件很糟糕的事情,当在MySQL中激活更严格的模式时,可能会导致将来出现问题)
ALTER TABLE `stores` CHANGE `modified` `modified` DATE NOT NULL DEFAULT '0000-00-00';
或者让MySQL在修改时使用当前日期(这是我的选择),甚至不更改mysql结构中的任何内容:
INSERT INTO stores (name,cat_id,address,telephone,email,website,description,embed_video,default_media,latitude,longitude,created,modified) VALUES('bsg',',29,','4750 abc dr','11212121212','abc@gmail.com','','drrrr','','image','44.7847745','-93.19667930000003','2019-06-13 15:28:39',CURRENT_DATE);
甚至是您想要的'0000-00-00'值:
INSERT INTO stores (name,cat_id,address,telephone,email,website,description,embed_video,default_media,latitude,longitude,created,modified) VALUES('bsg',',29,','4750 abc dr','11212121212','abc@gmail.com','','drrrr','','image','44.7847745','-93.19667930000003','2019-06-13 15:28:39','0000-00-00');