Неверное целочисленное значение: '' для столбца 'id' в строке 1
Я пытаюсь вставить в мою базу данных mySQL. Первый столбец - это столбец "id", так как он имеет поле auto_increment, я оставил его пустым. По какой-то причине я не могу вставить, и я получаю ошибку, упомянутую ниже. Я ценю любую помощь в этом.
При попытке вставить следующую ошибку:
Incorrect integer value: '' for column 'id' at row 1
мой запрос
$insertQuery = "INSERT INTO workorders VALUES('', '$priority', '$requestType', '$purchaseOrder', '$nte', '$jobSiteNumber')";
Ответы
Ответ 1
Это, вероятно, означает, что ваш id
является целым числом AUTO_INCREMENT
, и вы пытаетесь отправить строку. Вы должны указать список столбцов и опустить его из INSERT
.
INSERT INTO workorders (column1, column2) VALUES ($column1, $column2)
Ответ 2
Чтобы MySql сгенерировал порядковые номера для поля AUTO_INCREMENT
, у вас есть три варианта:
- укажите список столбцов и опустите свой столбец auto_incremented из него, как предположил njk. Это лучший подход. См. комментарии.
- явно назначить NULL
- явно назначить 0
3.6.9. Использование AUTO_INCREMENT:
... Значение не указано для столбца AUTO_INCREMENT, поэтому MySQL назначенные порядковые номера автоматически. Вы также можете явно присвойте NULL или 0 столбец для генерации порядковых номеров.
Эти три оператора приведут к такому же результату:
$insertQuery = "INSERT INTO workorders (`priority`, `request_type`) VALUES('$priority', '$requestType', ...)";
$insertQuery = "INSERT INTO workorders VALUES(NULL, '$priority', ...)";
$insertQuery = "INSERT INTO workorders VALUES(0, '$priority', ...";
Ответ 3
Попробуйте отредактировать ваш my.cf, прокомментируйте оригинальный sql_mode и добавьте sql_mode = "".
vi /etc/mysql/my.cnf
sql_mode = ""
сохранить и выйти...
service mysql restart
Ответ 4
Это связано с тем, что тип столбца отправки данных является целым числом, и вы отправляете ему строковое значение.
Итак, для меня работал следующий способ.
Попробуйте с этим.
$insertQuery = "INSERT INTO workorders VALUES (
null,
'$priority',
'$requestType',
'$purchaseOrder',
'$nte',
'$jobSiteNumber'
)";
Не используйте 'null'
. используйте его как null
без одинарных кавычек.
Ответ 5
Для той же ошибки в wamp/phpmyadmin
я отредактировал my.ini
, прокомментировал оригинал:
;sql-mode= "STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER"
и добавил sql_mode = ""
.
Ответ 6
Я решил эту проблему, которая была вызвана простым копированием и вставкой из идентичной строки кода.