我最近更新了我的服務器從14.04至16.04(Ubuntu的是),並通過這樣做我也更新了MySQL和PHP服務器:Mysql的插入空不服務器更新後,工作
Server版本:5.7 .19-0ubuntu0.16.04.1 - (Ubuntu的)
PHP版本:7.0.22-0ubuntu0.16.04.1
因爲除了有不少我的應用程序的開始失常,這一切都做NULL。
看一個例子,這裏是PHP代碼:
$stmt=$db->prepare($query);
$stmt=$db->execute($data);
但這個結果:PHP消息:PHP的致命錯誤:
Uncaught PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'NULL' for column 'id' at row 1
爭取做$查詢的print_r
和$ data這是它返回的內容:
insert into `company` (`id`,`Name`,`customerid`,`named_person`,`email`,`contact_no`,`payment_term`,`billing_contact`,`billing_email`,`billing_add1`,`billing_add2`,`billing_postcode`,`docketmail`,`livefeed`,`auto_populate`,`risk`,`question`,`livefeed_pass`,`livefeed_user`,`owner`) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) on duplicate key update`Name`=?,`customerid`=?,`named_person`=?,`email`=?,`contact_no`=?,`payment_term`=?,`billing_contact`=?,`billing_email`=?,`billing_add1`=?,`billing_add2`=?,`billing_postcode`=?,`docketmail`=?,`livefeed`=?,`auto_populate`=?,`risk`=?,`question`=?,`livefeed_pass`=?,`livefeed_user`=?
Array
(
[0] => NULL
[1] => sdasdasd
[2] => 0
[3] => sdasdasd
[4] => asdasdas
[5] => sdasdasd
[6] => 14
[7] => dadasdsad
[8] => asdsadasd
[9] => dasdasdas
[10] => dasdasdsad
[11] => dasdasdas
[12] =>
[13] => 0
[14] => 1
[15] => 0
[16] => 0
[17] =>
[18] =>
[19] => 1
[20] => sdasdasd
[21] => 0
[22] => sdasdasd
[23] => asdasdas
[24] => sdasdasd
[25] => 14
[26] => dadasdsad
[27] => asdsadasd
[28] => dasdasdas
[29] => dasdasdsad
[30] => dasdasdas
[31] =>
[32] => 0
[33] => 1
[34] => 0
[35] => 0
[36] =>
[37] =>
)
這個工作在更新服務器之前。
innodb正在嚴格模式下運行。
好的解決方案發布在這裏:#1366 - Incorrect integer value:MYsql幫助,但我覺得這是一個解決方法,而不是一個修復,並仍然希望得到它的修復。
謝謝。
是否將'id'設置爲MySQL中的自動增量?你在這個查詢中傳遞了什麼數據? – IsThisJavascript
是的id被設置爲自動增量。我正在傳遞我在問題中顯示的確切數組。 –
你可以從插入查詢中刪除'id',mysql會處理它。 – IsThisJavascript