??? 如果分配給CHAR或VARCHAR列的值超過列的最大長度,則對值進行裁剪以使其適合。如果被裁掉的字符不是空格,則會產(chǎn)生一條警告。如果裁剪非空格字符,則會造成錯誤(而不是警告)并通過使用嚴格SQL模式禁用值的插入。
MySQL服務(wù)器模式說明:
MySQL服務(wù)器可以以不同的SQL模式來操作,并且可以為不同客戶端應(yīng)用不同模式。這樣每個應(yīng)用程序可以根據(jù)自己的需求來定制服務(wù)器的操作模式。
模式定義MySQL應(yīng)支持哪些SQL語法,以及應(yīng)執(zhí)行哪種數(shù)據(jù)驗證檢查。這樣可以更容易地在不同的環(huán)境中使用MySQL,并結(jié)合其它數(shù)據(jù)庫服務(wù)器使用MySQL。
你可以用--sql-mode="modes"選項啟動mysqld來設(shè)置默認SQL模式。如果你想要重設(shè),該值還可以為空(--sql-mode ="")。
你還可以在啟動后用SET [SESSION|GLOBAL] sql_mode='modes'語句設(shè)置sql_mode變量來更改SQL模式。設(shè)置 GLOBAL變量時需要擁有SUPER權(quán)限,并且會影響從那時起連接的所有客戶端的操作。設(shè)置SESSION變量只影響當前的客戶端。任何客戶端可以隨時更改自己的會話 sql_mode值。
Modesis是用逗號(‘,’)間隔開的一系列不同的模式。你可以用SELECT
@@sql_mode語句查詢當前的模式。默認值是空(沒有設(shè)置任何模式)。
主要重要sql_mode值為:
·???????? ANSI
更改語法和行為,使其更符合標準SQL。
·???????? STRICT_TRANS_TABLES
如果不能將給定的值插入到事務(wù)表中,則放棄該語句。對于非事務(wù)表,如果值出現(xiàn)在單行語句或多行語句的第1行,則放棄該語句。本節(jié)后面給出了更詳細的描述。
·???????? TRADITIONAL
Make MySQL的行為象“傳統(tǒng)”SQL數(shù)據(jù)庫系統(tǒng)。該模式的簡單描述是當在列中插入不正確的值時“給出錯誤而不是警告”。注釋:一旦發(fā)現(xiàn)錯誤立即放棄INSERT/UPDATE。如果你使用非事務(wù)存儲引擎,這種方式不是你想要的,因為出現(xiàn)錯誤前進行的數(shù)據(jù)更改不會“滾動”,結(jié)果是更新“只進行了一部分”。
本手冊指“嚴格模式”,表示至少STRICT _TRANS_TABLES或STRICT _ALL_TABLES被啟用的模式。