MySQL儲存過程中的sql_mode問題

denniswwh發表於2010-12-16

在my.cnf中設定了sql_mode='STRICT_TRANS_TABLES';

卻發現還是有非法資料的寫入,比如無符號整數字段本來值是0,還可以減,結果當然溢位了,經檢查發現儲存過程中預設的sql_mode並沒有使用global的sql_mode,測試如下:

CREATE PROCEDURE p_test()
BEGIN
select @@session.sql_mode,@@global.sql_mode;
END;

call p_test();

+--------------------+---------------------+
| @@session.sql_mode | @@global.sql_mode |
+--------------------+---------------------+
| | STRICT_TRANS_TABLES |
+--------------------+---------------------+
1 row in set (0.00 sec)

CREATE PROCEDURE p_test1()
BEGIN
set ;

select @@session.sql_mode,@@global.sql_mode;
END;

call p_test1();

+---------------------+---------------------+
| @@session.sql_mode | @@global.sql_mode |
+---------------------+---------------------+
| STRICT_TRANS_TABLES | STRICT_TRANS_TABLES |
+---------------------+---------------------+
1 row in set (0.00 sec)

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/124805/viewspace-1043174/,如需轉載,請註明出處,否則將追究法律責任。

相關文章