我正在将系统从旧服务器复制到公司的新服务器,我没有参与以前系统的开发。他们有一个当前(复杂)的网页,将记录插入数据库,我不完全理解它。但是,每个页面的代码和数据库设置完全相同。当我尝试插入未完成的表单(在我的版本上)时,我得到Field 'invoiceNo' doesn't have a default value
,而在先前系统上提交相同的未完成表单将创建(不完整)数据。
我检查了罪魁祸首字段的设置,并将其设置为Not Null,默认值为“Null”。两个数据库的设置相同,那么为什么相同的插入数据被区别对待?
旧的MySQL版本:5.0.41-community-nt
新的MySQL版本:5.5.20
旧MySQL管理员版本:1.2.12
新的MySQL管理员版本:1.2.17
很抱歉,如果听起来我不太清楚我在谈论什么 - 事实上我不这样做,因为旧系统对我来说是一个陌生人而且它是巨大而复杂的。可以回答任何问题。
答案 0 :(得分:1)
可能是新服务器设置为“严格”,或者在引入新版本时导致向后兼容性中断。
你的问题是虽然该字段期望“not null”但是你提供null(即没有提供它设置的数据)如果你将这个字段改为默认为“0”那么空字段将默认为0,数据应按预期添加。 (但是如果字段期望“非空”,那么你不应该提交“null”,所以我会在默认= 0之前看到它的路由原因!)