【问题标题】:Upgraded MySQL 5.0 Linux -> MySQL 5.1 Windows and now query doesn't work升级 MySQL 5.0 Linux -> MySQL 5.1 Windows,现在查询不起作用
【发布时间】:2010-07-16 01:16:19
【问题描述】:

首先,我知道这应该行不通。我们正在使用一个非常旧的 DAL/ORM(基于 Pear/DB/GenericDao)层,它错误地推测 id 不是自动增量/整数字段。

此语句在 5.0 Linux 中有效,在 5.1 Windows 中无效。 我的 ini 中是否有可能不同的设置(ignore_type_errors="yes":))?我真的不想在服务器升级任务中添加重写/升级这个 DAL/ORM(它早于我在公司)。

声明

INSERT INTO Party SET partyTypeID = 'PERSON',id = '',comment = '';

错误

Error Code: 1366
Incorrect integer value: '' for column 'id' at row 1)

表的 DDL

CREATE TABLE `Party` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `partyTypeID` varchar(32) NOT NULL DEFAULT '',
  `comment` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `partyTypeID` (`partyTypeID`)
) ENGINE=MyISAM AUTO_INCREMENT=1017793 DEFAULT CHARSET=latin1;

【问题讨论】:

  • 是否设置了任何特定的 SQL 模式? (运行show variables like 'sql_mode');

标签: php sql mysql pear


【解决方案1】:

您在 5.1 中使用的 SQL_MODE 可能比在 5.0 中使用的更严格,因此以前的警告现在变成了错误。

您使用的是什么 SQL_MODE?

SELECT @@GLOBAL.sql_mode;

这里有一个例子来说明如何摆脱错误:

mysql> set sql_mode = 'STRICT_TRANS_TABLES';
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO Party SET partyTypeID = 'PERSON',id = '',comment = '';
ERROR 1366 (HY000): Incorrect integer value: '' for column 'id' at row 1
mysql> set sql_mode = '';
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO Party SET partyTypeID = 'PERSON',id = '',comment = '';
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> show warnings;
+---------+------+------------------------------------------------------+
| Level   | Code | Message                                              |
+---------+------+------------------------------------------------------+
| Warning | 1366 | Incorrect integer value: '' for column 'id' at row 1 |
+---------+------+------------------------------------------------------+
1 row in set (0.00 sec)

【讨论】:

  • 就是这样!非常感谢!我有点惊讶您实际上可以关闭类型检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
相关资源
最近更新 更多