開發需求要求通過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 |
+--------------------------------------------+
此時開發再次導入數據到后臺,不再報錯。