程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL的sql_mode模式,MySQLsql_mode模式

MySQL的sql_mode模式,MySQLsql_mode模式

編輯:MySQL綜合教程

MySQL的sql_mode模式,MySQLsql_mode模式


舉例:
表test
CREATE TABLE `test` (
  `a` varchar(255) NOT NULL,
  `b` varchar(255) DEFAULT NULL,
  `c` int(11) DEFAULT NULL,
  `d` int(11) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
如果執行SQL語句insert into test values ('', '', '', '');會報錯:1366 - Incorrect integer value: '' for column 'c' at row 1
查找my.cnf文件,原來MySQL的sql_mode模式設置為sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,而且表的引擎為InnoDB,所以會報以上錯誤。
STRICT_TRANS_TABLES模式:嚴格模式,進行數據的嚴格校驗,只對支持事務的表(InnoDB)啟用嚴格模式,錯誤數據不能插入,報error錯誤。
NO_ENGINE_SUBSTITUTION模式:啟用後,若需要的存儲引擎被禁用或未編譯,則拋出錯誤;未啟用時將用默認的存儲引擎代替,並拋出一個異常。
WampServer集成開發環境的MySQL配置文件my.ini中默認並沒有設置MySQL的sql_mode模式,執行以上語句時並不會報錯,int類型的字段插入空值時會保存為0。
其他sql_mode模式:
STRICT_ALL_TABLES模式:嚴格模式,對所有引擎的表都啟用嚴格模式。在此模式下,一旦任何操作的數據產生問題,都將終止當前的操作,對於啟用STRICT_ALL_TABLES的非事務引擎而言,這時數據可能停留在一個未知的狀態,因此需非常小心這個選項可能帶來的潛在影響。

ANSI模式:寬松模式,對插入數據進行校驗,如果不符合定義類型或長度,對數據類型調整或截斷保存,報warning警告。 
TRADITIONAL模式:嚴格模式,當向mysql數據庫插入數據時,進行數據的嚴格校驗,保證錯誤數據不能插入,報error錯誤。用於事物時,會進行事務的回滾。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved