Php 为什么某些MySQL字段现在需要默认值?
我正在为一家公司将一个系统从一个旧服务器复制到一个新的(呃)服务器,我没有参与以前系统的开发。他们有一个当前的(复杂的)网页,可以将记录插入数据库,我不完全理解它。但是,每个页面的代码和数据库设置完全相同。当我尝试插入未完成的表单(在我的版本上)时,我得到的Php 为什么某些MySQL字段现在需要默认值?,php,mysql,database,migration,webserver,Php,Mysql,Database,Migration,Webserver,我正在为一家公司将一个系统从一个旧服务器复制到一个新的(呃)服务器,我没有参与以前系统的开发。他们有一个当前的(复杂的)网页,可以将记录插入数据库,我不完全理解它。但是,每个页面的代码和数据库设置完全相同。当我尝试插入未完成的表单(在我的版本上)时,我得到的字段“invoiceNo”没有默认值,而在以前的系统上提交相同的未完成表单将创建(不完整)数据 我已经检查了罪魁祸首字段的设置,它被设置为NOTNULL,默认值为“Null”。这两个数据库的设置相同,那么为什么对相同的插入数据进行不同的处理呢
字段“invoiceNo”没有默认值
,而在以前的系统上提交相同的未完成表单将创建(不完整)数据
我已经检查了罪魁祸首字段的设置,它被设置为NOTNULL,默认值为“Null”。这两个数据库的设置相同,那么为什么对相同的插入数据进行不同的处理呢
旧MySQL版本:5.0.41-community-nt
新MySQL版本:5.5.20
旧的MySQL管理版本:1.2.12
新的MySQL管理版本:1.2.17
抱歉,如果听起来我对我在说什么没有太多的线索-事实上,我不知道,因为旧系统对我来说是陌生的,它是巨大而复杂的。但是,您可以回答任何问题。可能是新服务器设置为“严格”,或者在推出新版本时导致向后兼容性中断
您的问题是,虽然该字段预期为“not null”,但您提供的是null(即未向其提供设置所期望的数据)。如果您将该字段更改为默认为“0”,则null字段将默认为0,并且应按预期添加数据。(但如果字段预期为“not null”,则不应提交“null”,因此在使用默认值=0对其进行黑客攻击之前,我会先查看路由原因!)可能是新服务器设置为“严格”,或者在引入新版本时导致向后兼容性中断
您的问题是,虽然该字段预期为“not null”,但您提供的是null(即未向其提供设置所期望的数据)。如果您将该字段更改为默认为“0”,则null字段将默认为0,并且应按预期添加数据。(但如果字段预期为“not null”,则不应提交“null”,因此在使用默认值=0对其进行黑客攻击之前,我会先查看导致该字段为“not null”的路由原因!)是否为旧数据库中的列
自动增量
?和MySQL v1.2??当然那是不对的。没有什么是自动递增的,其中一个字段是日期,所以不能自动递增。我的错,它是MySQL admin 1.2.12。实际的MySQL版本是旧版本:5.0.41-community-nt,新版本是5.5.20。(都是通过查询浏览器中的select version();获得的)列是否为旧数据库中的auto_increment
?和MySQL v1.2??当然那是不对的。没有什么是自动递增的,其中一个字段是日期,所以不能自动递增。我的错,它是MySQL admin 1.2.12。实际的MySQL版本是旧版本:5.0.41-community-nt,新版本是5.5.20。(都是通过查询浏览器中的选择版本()获得的)