web-dev-qa-db-fra.com

Valeur entière incorrecte: '' pour la colonne 'id' à la ligne 1

J'essaie d'insérer dans ma base de données MySQL. La première colonne est la colonne 'id', puisque c'est un champ auto_increment, je l'ai laissée en blanc. Pour une raison quelconque, je suis incapable d'insérer et je reçois l'erreur mentionnée ci-dessous. J'apprécie toute aide avec ceci.

J'obtiens l'erreur suivante en essayant d'insérer:

Incorrect integer value: '' for column 'id' at row 1

ma requête

$insertQuery = "INSERT INTO workorders VALUES('', '$priority', '$requestType', '$purchaseOrder', '$nte', '$jobSiteNumber')";
22
AnchovyLegend

Cela signifie probablement que votre id est un AUTO_INCREMENT entier et vous essayez d'envoyer une chaîne. Vous devez spécifier une liste de colonnes et l'omettre de votre INSERT.

INSERT INTO workorders (column1, column2) VALUES ($column1, $column2)
28
Kermit

Laisser MySql générer des numéros de séquence pour un AUTO_INCREMENT _ champ vous avez trois options:

  1. spécifiez list une liste de colonnes et omettez votre colonne auto_incremented comme suggéré par njk. Ce serait la meilleure approche. Voir les commentaires.
  2. attribuer explicitement NULL
  3. attribuer explicitement 0

.6.9. Utilisation de AUTO_INCREMENT :

... Aucune valeur n'ayant été spécifiée pour la colonne AUTO_INCREMENT, MySQL a attribué automatiquement les numéros de séquence. Vous pouvez également attribuer explicitement [~ # ~] null [~ # ~] ou 0 à la colonne pour générer des numéros de séquence.

Ces trois déclarations produiront le même résultat:

$insertQuery = "INSERT INTO workorders (`priority`, `request_type`) VALUES('$priority', '$requestType', ...)";
$insertQuery = "INSERT INTO workorders VALUES(NULL, '$priority', ...)";
$insertQuery = "INSERT INTO workorders VALUES(0, '$priority', ...";
21
peterm

Essayez d’éditer votre my.cf, commentez le sql_mode d’origine et ajoutez sql_mode = "".

vi /etc/mysql/my.cnf

sql_mode = ""

sauvegarder et quitter...

service mysql restart
9
PJunior

Cela est dû au fait que votre type de colonne d'envoi de données est entier et que vous lui envoyez une valeur de chaîne.

Ainsi, la manière suivante a fonctionné pour moi. Essayez avec celui-ci.

$insertQuery = "INSERT INTO workorders VALUES (
                    null,
                    '$priority',
                    '$requestType',
                    '$purchaseOrder',
                    '$nte',
                    '$jobSiteNumber'
                )";

N'utilisez pas 'null'. utilisez-le comme null sans guillemets simples.

1
Susampath

Pour la même erreur dans wamp/phpmyadmin, J'ai édité my.ini, commenta l'original:

;sql-mode= "STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER"

et ajouté sql_mode = "".

0
Machindra