首先,我知道这不应该工作。我们正在使用一个非常古老的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;
答案 0 :(得分:4)
你可能在5.1中使用了比在5.0中使用更严格的SQL_MODE,因此以前的警告现在是一个错误。
您使用的是什么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)