【问题标题】:mysql_query - different behaviour on different serversmysql_query - 不同服务器上的不同行为
【发布时间】:2011-12-16 12:39:40
【问题描述】:

我有 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-community)。

我在两台服务器上的 mysql DB 中都有一个表,如下所示:

创建表`test_table`( `id` int(11) NOT NULL auto_increment, `num` int(5) 非空, `txt` 文本不为空, `ste` bigint(5) 非空, 主键(`id`) ) 引擎=InnoDB 默认字符集=latin1

我在两台服务器上运行以下 php 代码:

mysql_query("开始交易"); if(!mysql_query("插入 test_table(num,txt) 值(1,'sd')")) { echo "错误发生。
".mysql_error(); mysql_query("回滚"); 出口; } 别的 { echo "插入成功"; mysql_query("提交"); 出口; }

我在我的 Plesk 服务器上成功运行了查询(带有警告 - 如果运行 SHOW WARNINGS 查询,我得到“字段 'ste' 没有默认值”,但该行已插入并且 mysql_query 返回 true)

但在我的 Zend 服务器上,mysql_query 返回 false 并显示相同的错误。该行未插入。

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

请帮助我。非常感谢。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您的 Zend 服务器上运行的 MySQL 似乎在严格模式下运行。这意味着原本是警告的内容会变成致命错误。

    有关服务器模式以及如何更改它们的信息,请参阅 here,尝试禁用严格模式,看看是否有帮助。

    【讨论】:

    • 非常感谢您的回复。我将 sql-mode 设置为“”,它工作正常。再次感谢。
    【解决方案2】:

    您可以使用 IGNORE 关键字吗?将 IGNORE 插入 ..... 不知道这是否是个好主意

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-20
      • 2019-01-09
      • 2013-11-19
      • 2021-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      相关资源
      最近更新 更多