您好,登錄后才能下訂單哦!
開發需求要求通過php后臺程序導入數據到mysql的某個庫的表中,但是報錯:Incorrect integer value: '' for column 'id' at row 1。同時自己在mysql5.6的數據庫的這個表中insert into 一條數據,insert into log values('','admin','31','002t'),還是報錯出現上面同樣的錯誤。
于是網上百度找到解決辦法:
參考資料:http://blog.csdn.net/j2eelamp/article/details/6866614
解決辦法:
后來查了下MySQL的資料。發現5以上的版本如果是空值應該要寫NULL
這種問題一般mysql 5.x上出現。我用的mysql5.1
官方解釋說:得知新版本mysql對空值插入有"bug",要在安裝mysql的時候去除默認勾選的enable strict SQL mode
同時我線上的mysql數據庫的版本為mysql5.6.20.
于是找到一文檔:
mysql5.6 sql_mode設置
參考資料:
由于數據人員的需求,現在需要修改mysql的sql_mode
sql_mode默認是sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
這時候我在/etc/my.cnf配置如下
sql_mode=NO_ENGINE_SUBSTITUTION
重啟后還是
mysql> SELECT @@GLOBAL.sql_mode;
+--------------------------------------------+
| @@GLOBAL.sql_mode |
+--------------------------------------------+
| STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
1 row in set (0.00 sec)
這是因為我編譯安裝的目錄下面有一個文件叫my.cnf,然而這個文件里有sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 這一項
把這個my.cnf mv my.cnf my.cnf.ori
grep sql_mode /usr/local/mysql/my.cnf.ori
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
同時在/etc/my.cnf 文件中設置:
sql_mode= NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION
grep "sql_mode" /etc/my.cnf
sql_mode=NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION
再重啟mysql
mysql> SELECT @@GLOBAL.sql_mode;
+--------------------------------------------+
| @@GLOBAL.sql_mode |
+--------------------------------------------+
| NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+
此時開發再次導入數據到后臺,不再報錯。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。