ITPub博客

首页 > 数据库 > MySQL > MySQL存储过程中的sql_mode问题

MySQL存储过程中的sql_mode问题

原创 MySQL 作者:denniswwh 时间:2010-12-16 18:19:36 0 删除 编辑

在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 sql_mode=@@global.sql_mode;

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博客 ” ,链接:https://blog.itpub.net/124805/viewspace-1043174/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    74
  • 访问量
    397478