我偶然发现了一个有趣的 MySQL 错误消息,我真的不知道如何解释。
设置:
- 有两个表 A 和 B。
- 当在表 A 中写入或更新数据时,触发器正在将数据写入表 B。
- 操作发生在 Master 数据库上
- 数据被复制到从服务器
现在,每当我决定更新表 A 中的数据时,它就会被更新并将相应的日志消息写入表 B。然而,MySQL 会产生以下错误消息:
注意:#1592 使用语句格式写入二进制日志的不安全语句,因为 BINLOG_FORMAT = STATEMENT。该语句是不安全的,因为它使用了 LIMIT 子句。这是不安全的,因为包含的行集无法预测。
注意:#1592 使用语句格式写入二进制日志的不安全语句,因为 BINLOG_FORMAT = STATEMENT。语句是不安全的,因为它调用插入到 AUTO_INCREMENT 列中的触发器或存储函数。无法正确记录插入的值。
注意:#1592 使用语句格式写入二进制日志的不安全语句,因为 BINLOG_FORMAT = STATEMENT。从另一个表中选择后写入具有自动增量列的表的语句是不安全的,因为检索行的顺序决定了将写入哪些(如果有)行。此顺序无法预测,并且可能在主从服务器上有所不同。
没有什么令人高兴的。我怎样才能避免这些?