Mysql 相同的代码在不同机器上执行之后,调用有的出错有的不出错。

今天遇到个奇怪的问题,同一个存储过程在不同的电脑上执行之后,调用的时候有的报错有的不报错,错误原因是将string转为int的时候。

google之后发现时sql-mode的问题,使用sqlyog的时候默认为STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION这两个模式,然后在类型转换的时候就会报错,

当使用xshell中执行之后,mode为空,这个时候时候类型转换就不会报错。这个里记录一下。

一般情况下这个sql-mode推荐设置为严格模式,有些特殊情况下可以利用不同设置来简化代码的编写,但出错的几率就提高了。

在sqlyog中如果想临时将sql-mode设置成空,又不想修改软件配置,那可以用SET sql_mode = ''来设置一下就好了。

sql-mode还有很多其他的模式,具体的看mysql的文档吧,链接:http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html

posted @ 2016-04-12 15:13  扫地猿  阅读(418)  评论(0)    收藏  举报