2010-07-15 6 views
1

Tout d'abord, je sais que cela ne devrait pas fonctionner. Nous utilisons une très ancienne couche DAL/ORM (basée sur Pear/DB/GenericDao) qui suppose à tort que l'identifiant n'est pas un champ auto-incrémenté/entier.Mis à jour MySQL 5.0 Linux -> MySQL 5.1 Windows et maintenant la requête ne fonctionne pas

Cette instruction fonctionne dans Linux 5.0, ne fonctionne pas dans Windows 5.1. Y a-t-il un paramètre qui pourrait être différent dans mon ini (ignore_type_errors = "yes" :))? Je ne veux vraiment pas ajouter de réécriture/mise à niveau de ce DAL/ORM (qui me précède dans l'entreprise) aux tâches de mise à niveau du serveur.

Déclaration

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

Erreur

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

DDL pour le tableau

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

Est-ce une mode SQL particulier défini? (Exécuter 'afficher des variables comme 'sql_mode''); – nos

Répondre

4

Vous utilisez probablement une SQL_MODE plus stricte en 5.1 que vous utilisiez dans 5,0, donc ce qui était être un avertissement est maintenant une erreur.

Quel SQL_MODE utilisez-vous?

SELECT @@GLOBAL.sql_mode; 

Voici un exemple pour montrer comment se débarrasser de l'erreur:

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) 
+0

C'était tout! Merci beaucoup! Je suis un peu surpris que vous pouvez désactiver la vérification de type. – evilknot