问题描述
||
我们开始使用基于语句的复制,发现它破坏了sql_CALC_FOUND_ROWS和FOUND_ROWS(),我正在寻找解决方法。来自2007年错误报告的评论建议使用ѭ0,但这似乎不起作用。 MysqL说语法无效。
解决方法
如果您使用的是旧版MySQL,则可能是问题的一部分:http://dev.mysql.com/doc/refman/5.1/en/information-functions.html#function_found-rows
FOUND_ROWS()未复制
可靠地使用基于语句的
复制。从MySQL开始
5.1.23,使用基于行的功能自动复制此功能
复制。
编辑:仅当您处于“ 1”模式时,以上方法才有效。
另外,正确的解决方法语法是:
SELECT SQL_CALC_FOUND_ROWS * FROM foo;
SET @found_rows = FOUND_ROWS();
SQL_CALC_FOUND_ROWS
不返回任何内容,它只是告诉MySQL计算从查询中找到的行数,即使a4ѭ子句阻止所有这些行都返回给客户端。然后可以使用FOUND_ROWS()
返回ѭ3temporarily临时存储的值。
编辑:上述解决方法背后的想法(如MySQL错误12092中所述):
FOUND_ROWS()的结果被存储
到用户变量中并使用
相反。这将复制
即使在基于语句的情况下也正确
复制,因为它会写一个
二进制日志的User_var条目。