數據庫添加信息報錯

剛剛開始覺得是字段類型給錯了  必須給一個默認值,然而並非php

而後綜合參考了哈網上html

連接:mysql

查看錯誤    https://www.linuxidc.com/Linux/2017-08/146204.htmlinux

Mysql如何取消嚴格模式    http://www.linuxeye.com/database/2909.htmlsql

 

 

查看錯誤數據庫

開發需求要求經過php後臺程序導入數據到mysql的某個庫的表中,可是報錯:Incorrect integer value: '' for column 'id' at row 1。同時本身在mysql5.6的數據庫的這個表中insert into 一條數據,insert into log values('','admin','31','002t'),仍是報錯出現上面一樣的錯誤。spa

解決辦法:
後來查了下MySQL的資料。發現5以上的版本若是是空值應該要寫NULL
這種問題通常mysql 5.x上出現。我用的mysql5.1
官方解釋說:得知新版本mysql對空值插入有"bug",要在安裝mysql的時候去除默認勾選的enable strict SQL moderest

同時我線上的mysql數據庫的版本爲mysql5.6.20.
因而找到一文檔:htm

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_TABLESblog

同時在/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 |
+--------------------------------------------+
此時開發再次導入數據到後臺,再也不報錯。

 

 

取消嚴格模式

方法1、修改my.cnf 一、設置啓動參數,將默認sql_mode改成寬鬆模式 使用命令: echo sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION /etc/my.cnf 或手動修改: vi /etc/my.cnf 找到sql-mode關鍵字,若沒有,

方法1、修改my.cnf
一、設置啓動參數,將默認sql_mode改成寬鬆模式
使用命令:
echo "sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" >> /etc/my.cnf
或手動修改:
vi /etc/my.cnf
找到sql-mode關鍵字,若沒有,在文件尾添加一行
替換成:
sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTIO
 
二、重啓MySQL
service mysqld restart
 
方法2、修改啓動腳本
一、設置啓動腳本參數
使用命令:
sed -i "s#\"\$\*\"#--sql-mode=\"NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\"#" /etc/init.d/mysqld
或手動修改:
vi /etc/init.d/mysqld
找到
other_args="$*"
改爲
other_args="--sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 
 
二、重啓MySQL
service mysqld restart
相關文章
相關標籤/搜索