我正在为一家公司将系统从旧服务器复制到新(呃)服务器,我没有参与以前系统的开发。他们有一个当前的(复杂的)网页,可以将记录插入数据库,但我并不完全理解。但是,每个页面的代码和数据库设置是完全一样的。当我尝试插入未完成的表格(在我的版本中)时,我得到 Field 'invoiceNo' doesn't have a default value
而在以前的系统上提交相同的未完成表格将创建(不完整)数据。
我已经检查了 culprit 字段的设置,它被设置为 Not Null,默认值为“Null”。两个数据库设置相同,那么为什么相同的插入数据被不同地处理?
MySQL 旧版本:5.0.41-community-nt
新的MySQL版本:5.5.20
旧的 MySQL 管理版本:1.2.12
新的 MySQL 管理版本:1.2.17
抱歉,如果听起来我不太清楚我在说什么 - 事实上我不知道,因为旧系统对我来说很陌生,而且它庞大而复杂。不过可以回答任何问题。
最佳答案
可能是新服务器设置为“严格”,或者在引入新版本时导致向后兼容性中断。
您的问题是虽然该字段期望“不为空”,但是您提供的是空值(即不向其提供设置期望的数据)如果您将此字段更改为默认为“0”,则空字段将默认为 0,数据应该按预期添加。 (但是,如果该字段期望“非空”,则您不应该提交“空”,因此在使用默认值=0 对其进行黑客攻击之前,我会先查看其路由原因!)
关于php - 为什么某些 MySQL 字段现在需要默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11615863/