gpt4 book ai didi

mysql - 基于语句的复制和 SQL_CALC_FOUND_ROWS

转载 作者:行者123 更新时间:2023-11-29 14:49:25 24 4
gpt4 key购买 nike

我们开始使用基于语句的复制,发现它破坏了 SQL_CALC_FOUND_ROWS 和 FOUND_ROWS(),我正在寻找解决方法。 2007 年错误报告中的评论建议使用 SELECT SQL_CALC_FOUND_ROWS INTO @found_rows FROM foo ,但这似乎不起作用。 MySQL 说语法无效。

最佳答案

如果您使用的是较旧版本的 MySQL,这可能是您问题的一部分:http://dev.mysql.com/doc/refman/5.1/en/information-functions.html#function_found-rows

FOUND_ROWS() is not replicated reliably using statement-based replication. Starting with MySQL 5.1.23, this function is automatically replicated using row-based replication.

编辑:上述内容仅在您处于MIXED模式时才有效。

此外,正确的解决方法语法是:

SELECT SQL_CALC_FOUND_ROWS * FROM foo;
SET @found_rows = FOUND_ROWS();

SQL_CALC_FOUND_ROWS 不返回任何内容,它只是告诉 MySQL 计算查询中找到的行数,即使 LIMIT 子句阻止所有这些行被计算出来。返回给客户端。然后,FOUND_ROWS() 可用于返回 SQL_CALC_FOUND_ROWS 临时存储的值。

编辑:上述解决方法背后的想法(如 MySQL bug 12092 中所述):

The result of FOUND_ROWS() is stored into a user variable and used that way instead. This will replicate correctly even under statement-based replication, since it will write a User_var entry to the binary log.

关于mysql - 基于语句的复制和 SQL_CALC_FOUND_ROWS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6117271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com