Statement may not be safe to log in statement format.

netxuning 2009-08-20 10:11:15
设置主从同步,开启bin-log后,主服务器的mysql.log出现了大量的这样的警告,全是update的语句:
090819 0:02:52 [Warning] Statement may not be safe to log in statement format. Statement: UPDATE E_info SET info_reprint = info_rep
rint + 1 WHERE infoID = 2505484720 LIMIT 1

不知何故!
...全文
1224 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
netxuning 2009-08-20
  • 打赏
  • 举报
回复
嗯,是的,问题解决了,非常感谢!
denniswwh 2009-08-20
  • 打赏
  • 举报
回复
你那个版本的默认值是STATEMENT,你可以用show variables like 'binlog_format'查看
只要你的从库版本不低于主库的,MIXED也一样可以主从复制的。
netxuning 2009-08-20
  • 打赏
  • 举报
回复
mysqld 版本是 Server version: 5.1.37-log Source distribution
netxuning 2009-08-20
  • 打赏
  • 举报
回复
my.cnf里没有设置binlog_format这项,
只有一个被注释了的:
#binlog_format=mixed
不知道默认值是什么!
netxuning 2009-08-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 denniswwh 的回复:]
那你看一下你的binlog_format的设置是不是STATEMENT?改成MIXED应该就没有警告了
[/Quote]

如果改成了MIXED,中从同步会不会出问题呢?
denniswwh 2009-08-20
  • 打赏
  • 举报
回复
带LIMIT 1这样的更新语句到从库上执行可能跟主库上的更新的记录不一样,所以说是不安全的。
denniswwh 2009-08-20
  • 打赏
  • 举报
回复
那你看一下你的binlog_format的设置是不是STATEMENT?改成MIXED应该就没有警告了
netxuning 2009-08-20
  • 打赏
  • 举报
回复
发现除了update的情况还有一种delete的语句也导致了这样的警告:

090819 9:07:11 [Warning] Statement may not be safe to log in statement format. Statement: DELETE FROM `E_info` WHERE infoID = 2506408980 LIMIT 1

无论是update还是delete,都有一个共同点 结尾都有limit 1,不清楚是不是这个会导致警告中所谓的‘may not be safe’。
netxuning 2009-08-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 denniswwh 的回复:]
你用的mysql5.1吗?
[/Quote]

是的!因为要用到分区,所以升级成了5.1
denniswwh 2009-08-20
  • 打赏
  • 举报
回复
你用的mysql5.1吗?
netxuning 2009-08-20
  • 打赏
  • 举报
回复
这让mysqld.log迅速暴增到1.3G

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧