Php 升级MySQL 5.0 Linux->;MySQL 5.1 Windows和now query不';行不通
首先,我知道这不应该起作用。我们使用的是一个非常旧的DAL/ORM(基于Pear/DB/GenericDao)层,它错误地推测id不是一个自动递增/整数字段 此语句在5.0 Linux中有效,在5.1 Windows中无效。在我的ini中是否有可能不同的设置(ignore_type_errors=“yes”):?我真的不想在服务器升级任务中添加重写/升级这个DAL/ORM(它比我在公司的时间早) 声明Php 升级MySQL 5.0 Linux->;MySQL 5.1 Windows和now query不';行不通,php,sql,mysql,pear,Php,Sql,Mysql,Pear,首先,我知道这不应该起作用。我们使用的是一个非常旧的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
INSERT INTO Party SET partyTypeID = 'PERSON',id = '',comment = '';
错误
表的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;
在5.1中使用的SQL_模式可能比在5.0中使用的更严格,因此以前的警告现在变成了错误 您使用的是什么SQL_模式
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)
在5.1中使用的SQL_模式可能比在5.0中使用的更严格,因此以前的警告现在变成了错误 您使用的是什么SQL_模式
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)
是否设置了任何特定的SQL模式?(运行
显示变量,如'sql_mode'
);是否设置了任何特定的SQL模式?(运行显示变量,如'sql_mode'
);就这样!非常感谢!我有点惊讶,你居然可以关闭类型检查。就是这样!非常感谢!我有点惊讶,你居然可以关闭类型检查。