1

我正在将系统从旧服务器复制到公司的新(er)服务器,我没有参与以前系统的开发。他们有一个将记录插入数据库的当前(复杂)网页,我并不完全理解。但是,每个页面的代码和数据库设置是完全一样的。当我尝试插入未完成的表单(在我的版本上)时,我得到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

抱歉,如果听起来我不太清楚我在说什么 - 事实上我不知道,因为旧系统对我来说是一个陌生人,而且它庞大而复杂。不过可以回答任何问题。

4

1 回答 1

1

可能是新服务器设置为“严格”,或者在引入新版本时导致了向后兼容性中断。

您的问题是,虽然该字段期望“非空”但是您提供空值(即不提供它设置期望的数据)如果您将此字段更改为默认为“0”,那么空字段将默认为 0相反,应按预期添加数据。(但如果该字段期望“not null”,则您不应该提交“null”,因此我会先查看其路由原因,然后再使用 default=0 破解它!)

于 2012-07-23T16:00:57.340 回答