mysql_query - 不同服务器上的不同行为

时间:2011-10-27 13:34:11

标签: mysql

我有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并显示相同的错误。没有插入行。

我需要插入行而忽略警告。我花了一整天的时间在这上面,现在没有选择了。

请帮我解决这个问题。非常感谢。

2 个答案:

答案 0 :(得分:1)

似乎Zend服务器上运行的MySQL正在严格模式下运行。这意味着否则会发出警告就会成为致命错误。

有关服务器模式及其更改方法的信息,请参阅here,尝试禁用严格模式,看看是否有帮助。

答案 1 :(得分:0)

你能使用IGNORE关键字吗?插入IGNORE .....不确定这是不是一个好主意