2010-06-07 6 views
2

J'ai hérité d'un projet que nous essayons de migrer vers MySQL 5 à partir de MySQL 4.0 (!) Et de myISAM à InnoDB. Les requêtes tombent maintenant parce qu'elles sont construites en utilisant une connexion ADODB -> qstr() sur tous les paramètres, y compris ints. Où aucune valeur n'est que je retrouve avec:Insérer une chaîne vide dans la colonne auto_increment dans MySQL 5

INSERT INTO tablename VALUES ('', 'stuff'...) 

où la première colonne est un auto_increment. Cela provoque une erreur (assez juste puisque '' n'est pas un int). Y at-il un commutateur MySQL pour qu'il se comporte comme autrefois

Répondre

1

Modifier (Je suppose que silencieusement converti en 0?):

Je viens couru quelques tests et ce que j'ai écrit ci-dessous gagné » t vous aider du tout. L'erreur est due au mauvais type de données, et le paramètre SQL que j'ai suggéré ne change pas cela. Je vais laisser cette réponse ici, car cela pourrait être utile à quelqu'un d'autre.


Tout d'abord, vérifiez que la colonne est vraiment incrémentation automatique - deux ou trois fois j'ai eu CREATE TABLE fichiers où le fait qu'une colonne est auto_increment il manquait malheureusement.

L'autre chose qui pourrait aider est de vérifier que NO_AUTO_VALUE_ON_ZERO n'est pas allumé.

SET SQL_MODE='' devrait l'éteindre.

+0

SET SQL_MODE = '' semble faire l'affaire en réalité, car il désactive 'TRADITIONAL' qui provoque un type de données incorrect d'être une erreur plutôt que d'un avertissement –

+0

@QmunkE - Eh bien que diriez-vous. – nickf

Questions connexes