mysql sql_mode 在SQLyog UI工具中失效的原因和解决办法

问题详细说明:

 

http://www.webyog.com/forums/index.php?showtopic=2416

 

 

 

解决办法:

用SQLyog 工具连接数据库后,

在Query中,执行如下的SQL。

 

set sql_mode=
"STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE"

即可。

 

注意:每次断开后,就要重新执行上面的SQL,才能使sql_mode模式生效。

 

另外需要注意的是Sql_mode要在my.ini(或者my.conf)文件中设置,才能起作用

In our my.cnf file we have set the sql_mode to ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE

问题产生的原因是:

现在有一张表

create table a (a int );

insert into a values(1000);

这样插入是没有问题的。

如果在my.ini文件里没有配置sql_mode =ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE

 

insert into a values('ttttt');

这样也会将数据插入到表a中,同时会有警告显示。

数据显示为:

a

----------

1000

0

------------

ttt 字符类型变成了0!!!

很显然,这个是不符合我们的要求的。

所以在my.ini 配置文件中要设置

 sql_mode =ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE

这样一来

insert into a values('ttttt');

就会显示Error,数据就不会插入到表 a中。

 

 

 只要是在my.ini 配置文件中设置了sql_mode,在mysql 自带的客户端和Toad for mysql客户端中,都不会出现。

而在SQLyog UI工具中就会失效,插入

insert into a values('ttttt');依旧可以插入。

所以必须像上面的解决办法里面说的

手工设置

set sql_mode=
"STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值