您好,登錄后才能下訂單哦!
這篇文章主要講解了“Mysql的SQL_MODE常用值有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Mysql的SQL_MODE常用值有哪些”吧!
在做數據庫實驗的時候對mysql表進行UPDATE操作時,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
原來mysql有個叫SQL_SAFE_UPDATES的變量。查了好久,全部中文結果都是copy來copy去的,而且也只是簡單給出解決方式。后來找到老外網,上面這么說:MySQL will refuse to run the UPDATE or DELETE query if executed without the WHERE clause or LIMIT clause. MySQL will also refuse the query which have WHERE clause but there is no condition with the KEY column(自己翻譯吧)。但是還是不知道這個update safe model是干嘛用的,只能簡單猜測:為了數據的安全。
SQL_SAFE_UPDATES有兩個取值:0和1。SQL_SAFE_UPDATES = 1時,不帶where和limit條件的update和delete操作語句是無法執行的,即使是有where和limit條件但不帶key column的update和delete也不能執行。SQL_SAFE_UPDATES = 0時,update和delete操作將會順利執行。那么很顯然,此變量的默認值是1。如圖改完后update操作順利完成:
sql_mode常用值如下:
ONLY_FULL_GROUP_BY:
對于GROUP BY聚合操作,如果在SELECT中的列,沒有在GROUP BY中出現,那么這個SQL是不合法的,因為列不在GROUP BY從句中
NO_AUTO_VALUE_ON_ZERO:
該值影響自增長列的插入。默認設置下,插入0或NULL代表生成下一個自增長值。如果用戶 希望插入的值為0,而該列又是自增長的,那么這個選項就有用了。
STRICT_TRANS_TABLES:
在該模式下,如果一個值不能插入到一個事務表中,則中斷當前的操作,對非事務表不做限制
NO_ZERO_IN_DATE:
在嚴格模式下,不允許日期和月份為零
NO_ZERO_DATE:
設置該值,mysql數據庫不允許插入零日期,插入零日期會拋出錯誤而不是警告。
ERROR_FOR_DIVISION_BY_ZERO:
在INSERT或UPDATE過程中,如果數據被零除,則產生錯誤而非警告。如 果未給出該模式,那么數據被零除時MySQL返回NULL
NO_AUTO_CREATE_USER:
禁止GRANT創建密碼為空的用戶
NO_ENGINE_SUBSTITUTION:
如果需要的存儲引擎被禁用或未編譯,那么拋出錯誤。不設置此值時,用默認的存儲引擎替代,并拋出一個異常
PIPES_AS_CONCAT:
將"||"視為字符串的連接操作符而非或運算符,這和Oracle數據庫是一樣的,也和字符串的拼接函數Concat相類似
ANSI_QUOTES:
啟用ANSI_QUOTES后,不能用雙引號來引用字符串,因為它被解釋為識別符
ORACLE的sql_mode設置等同:PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER.
如果使用mysql,為了繼續保留大家使用oracle的習慣,可以對mysql的sql_mode設置如下:
在my.cnf添加如下配置
[mysqld]
sql_mode='ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,
ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI_QUOTES'
感謝各位的閱讀,以上就是“Mysql的SQL_MODE常用值有哪些”的內容了,經過本文的學習后,相信大家對Mysql的SQL_MODE常用值有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。