最近使用mysql數據庫高一點的版本遇到了,插入和修改等語句失敗情況。語句沒有錯誤,但是workbench提示 Field 'id' doesn't have a default value。原因是
數據庫開啟了嚴格模式,以插入語句來說 語句中包含多列空值時,則不允許插入。如果確實需要插入多列空值的情況下。則就需要關閉嚴格審查模式了
關閉方法,首先找到mysql的安裝目錄下的.ini文件,以默認安裝目錄來說一般存在
C:\ProgramData\MySQL\MySQL Server 5.6\my.ini
在別的服務器運行我的網站程序的時候,出現了Field 'id' doesn't have a default value 的提示,意思是這個值我沒有提交數據,並且數據庫結構沒有設置默認值,由於對方的mysql服務器開啟了STRICT_TRANS_TABLES嚴格模式,所以報錯了
解決方法是:
如果自己的服務器,有權限修改my.ini的話,打開my.ini,查找 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
修改為
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
然后重啟MYSQL
在別人的虛擬空間上當然不可能實現,所以根本的解決方法還是修改自己的數據結構,把非空的字段加上默認值,以后設計數據庫要注意這一點,方便程序的移植
安全模式處理
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect. 0.000 sec
原因是你執行更新和刪除語句沒有使用主鍵條件作為條件
臨時關閉數據庫限制
執行命令SET SQL_SAFE_UPDATES = 0;修改下數據庫模式
SET SQL_SAFE_UPDATES = 0
使用完之后關閉
如果想要提高數據庫安全等級,可以在恢復回原有的設置,執行命令:SET SQL_SAFE_UPDATES = 1;
