MySQL的sql_mode模式,mysql5.0版本以上支援了三種sql_mode模式,如下:
ANSI 寬鬆模式,對插入資料進行校驗,如果不符合定義型別或長度,對資料型別調整或截斷儲存,報warning警告。
TRADITIONAL 嚴格模式,當向mysql資料庫插入資料時,進行資料的嚴格校驗,保證錯誤資料不能插入,報error錯誤。用於事物時,會進行事物的回滾。
STRICT_TRANS_TABLES 嚴格模式,進行資料的嚴格校驗,錯誤資料不能插入,報error錯誤。
預設是:ANSI模式,請改成 STRICT_TRANS_TABLES
[mysql] sql_mode
Re: [mysql] sql_mode
可以參考這個範例(sqlfiddle 預設不是 ANSI):
http://sqlfiddle.com/#!9/62d528/1
若將第一行拿掉, 則無法成功寫入.
http://sqlfiddle.com/#!9/62d528/1
代碼: 選擇全部
SET SESSION sql_mode = 'ANSI'; /* if disable this sql_mode setting, no data will be inserted. */
CREATE TABLE books
(`id` int, `booksn` VARCHAR(5))
;
INSERT INTO books
(`id`, `booksn`)
VALUES
(1, '1234567890')
;
多多留言, 整理文章, 把經驗累積下來.....