我有2个不同的服务器: 一个正在运行的Plesk Panel(PHP 5.2.13和MySQL 5.0.45-community-nt), 另一个运行Zend Server 5.5(PHP 5.2.17和MySQL 5.1.50社区)。
我在两台服务器上都有一个mysql DB表,如下所示:
CREATE TABLE `test_table` ( `id` int(11) NOT NULL auto_increment, `num` int(5) NOT NULL, `txt` text NOT NULL, `ste` bigint(5) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1
我在两台服务器上运行以下php代码:
mysql_query("START TRANSACTION"); if(!mysql_query("insert into test_table(num,txt) values(1,'sd')")) { echo "ERROR OCCURED.
".mysql_error(); mysql_query("ROLLBACK"); exit; } else { echo "Successful insertion"; mysql_query("COMMIT"); exit; }
我在我的Plesk服务器上成功运行查询(有警告 - 如果运行SHOW WARNINGS查询,我得到“字段'ste'没有默认值”,但插入行并且mysql_query返回true) / p>
但是在我的Zend服务器上,mysql_query返回false并显示相同的错误。没有插入行。
我需要插入行而忽略警告。我花了一整天的时间在这上面,现在没有选择了。
请帮我解决这个问题。非常感谢。
答案 0 :(得分:1)
似乎Zend服务器上运行的MySQL正在严格模式下运行。这意味着否则会发出警告就会成为致命错误。
有关服务器模式及其更改方法的信息,请参阅here,尝试禁用严格模式,看看是否有帮助。
答案 1 :(得分:0)
你能使用IGNORE关键字吗?插入IGNORE .....不确定这是不是一个好主意