php - 两个 MySQL 服务器之间的行为差​​异(错误 1292)

标签 php mysql sql logging zend-framework

我们使用两台服务器(devsrvqualifsrv),一台用于开发,一台用于验证我们的应用程序。 我在两台服务器上都有完全相同的 Zend 应用程序(应用程序的文件和配置相同)。

我有一个日志表,其中插入了所进行的治疗以及实现这些治疗所需的时间。

当我在服务器 devsrv 上的表“Log”中插入一行时,没有问题。 当我在 qualifsrv 服务器上的“Log”表中执行完全相同的查询时,MySQL 返回一个错误,指出在 1292 中 log_duration 字段的值不正确。

我的日志表:

CREATE TABLE `T_log` (
  `log_id` int(11) NOT NULL AUTO_INCREMENT,
  `log_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `log_priority` varchar(10) DEFAULT NULL,
  `log_priority_name` varchar(20) DEFAULT NULL,
  `log_event` varchar(255) DEFAULT NULL,
  `log_commentaire` longtext,
  `log_impacted_row` int(10) DEFAULT NULL,
  `log_duration` time DEFAULT NULL,
  `vag_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`log_id`),
  KEY `idx_log_priority` (`log_priority`) USING BTREE,
  KEY `idx_log_date` (`log_date`) USING BTREE,
  KEY `idx_log_event` (`log_event`) USING BTREE,
  KEY `idx_impacted_row` (`log_impacted_row`) USING BTREE,
  KEY `fk_vag_id` (`vag_id`) USING BTREE,
  CONSTRAINT `T_log_ibfk_1` FOREIGN KEY (`vag_id`) REFERENCES `T_vague` (`vag_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4479 DEFAULT CHARSET=utf8;

查询:

INSERT INTO `T_log` (
    `log_priority`,
    `log_priority_name`,
    `log_event`,
    `log_commentaire`,
    `log_impacted_row`,
    `log_duration`,
    `vag_id`
)
VALUES
    (
        6,
        "INFO",
        "TEST",
        "UPDATE",
        87552,
        "20s",
        15
    )

当我插入devsrv时:

Affected rows: 1

(日志表中的 log_duration 值为:00:00:20)

当我插入qualifsrv时:

[Err] 1292 - Incorrect time value: '20s' for column 'log_duration' at row 1

为什么两台服务器之间的行为存在差异?

最佳答案

我发现了差异。这是因为全局变量 sql_mode 配置为不允许该字段预期的值之外的其他值。

更多信息请点击:http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html

关于php - 两个 MySQL 服务器之间的行为差​​异(错误 1292),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34070559/

相关文章:

PHP PDO - 可以连接但查询不工作

php - 通过 curl 发送图像

javascript - JSON 响应不是来自 php 的对象

java - 选择取一个结果返回null

PHP:一个查询中的两个表

php - 在进行 MySQL 查询之前删除一些数组元素

php - Char_length 在 select 语句中不起作用

java - Esper 数据库适配器将数据插入 mysql 数据库?

mysql - 如何在sql中使用 'inner join'和 'order by'

sql - 从今天的年份中选择大于 5 年前的所有年份