是一個很容易被忽視的配置,寬鬆模式下可能會被輸入一些非準確數據,因此生產環境下會要求爲嚴格模式,爲了保持生產環境和開發環境,測試環境一致性,咱們開發環境和測試環境也要配置成爲嚴格模式。mysql
ONLY_FULL_GROUP_BY:在分組查詢語句中若是一個select中的列沒有在group by中出現,則該語句是不合法的。sql
NO_AUTO_VALUE_ON_ZERO:在默認狀況下自增加列在插入0或NULL時會自動插入下一個自增加值。當設置該模式狀況下,插入0時不會進行自增加依然插入0值。數據庫
STRICT_TRANS_TABLES:對事務表進行限制,當一個數據不能插入到事務表中時中斷當前操做。對非實物表不作限制。session
NO_ZERO_IN_DATE:只要日期的月和日中含有0值都報錯,可是‘0000-00-00’除外。函數
NO_ZERO_DATE:只有‘0000-00-00’報錯。測試
ERROR_FOR_DIVISION_BY_ZERO:在INSERT或UPDATE過程當中,若是數據被零除,則產生錯誤而非警告。若是非該模式下被0除時mysql返回NULL。spa
NO_AUTO_CREATE_USER:禁止建立密碼爲空的用戶。事務
NO_ENGINE_SUBSTITUTION:若是須要的存儲引擎被禁用或未編譯,那麼拋出錯誤。不設置此值時,用默認的存儲引擎替代,並拋出一個異常。開發
PIPES_AS_CONCAT:將"||"視爲字符串的鏈接操做符而非或運算符,這和Oracle數據庫是同樣的,也和字符串的拼接函數Concat相相似。字符串
ANSI_QUOTES:啓用ANSI_QUOTES後,不能用雙引號來引用字符串,由於它被解釋爲識別符。
只須要修改sql_mode爲:PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER。
經過 "SELECT @@sql_mode;"查看當前數據庫模式,修改「SET sql_mode = ‘修改成模式’; 」。這種方式只在當前session生效。
同理:select @@global.sql_mode 和 set global sql_mode = '修改後的值';只在當前服務中生效,重啓後失效。
修改my.cnf文件重啓,永久生效。