1

根据这个答案:这里

的使用SQL_CALC_FOUND_ROWS不受竞态条件的限制。查询的结果SELECT,是的,但不是的结果FOUND_ROWS()。不要混淆这一点。

但是从我运行的所有查询中,它受到竞争条件的影响,每次我使用SQL_CALC_FOUND_ROWS时,由于某种原因,我经常遇到这些问题,我的结果来自select found_rows() as rows返回0

如果您有关于此主题的更多信息,请告诉我。

使用 --> Mysql 5.6 (Aurora RDS)

4

1 回答 1

1

Aurora 不是 MySQL。

亚马逊已经从存储引擎中剥离了很多代码和功能,但他们并没有禁用相应的功能或状态变量或配置变量。

MySQL 用户熟悉的许多功能仍然可以在 Aurora 上使用,但它们没有任何作用。就像其中一个投币式儿童游乐设施上的方向盘一样。

在此处输入图像描述

Aurora 没有提供有关哪些功能仍在运行以及哪些功能以这种方式“断开”的完整文档。

在 的情况下SQL_CALC_FOUND_ROWS,它可能仍然有效,具体取决于您的 Aurora 版本。我在他们的发行说明中找到了对它的引用:

https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Updates.20170515.html

修复了在 Aurora MySQL 版本 1.11 中引入的回归,其中在使用 SQL_CALC_FOUND_ROWS 选项和调用 FOUND_ROWS() 函数时查询可能返回不正确的结果。

您是否可能正在使用受此错误影响的 Aurora 实例,或者该错误是否可能在您使用的版本中再次退化?

您需要仔细检查可用的 Aurora 信息,如果找不到所需的信息,请联系 AWS 支持。

并且不要假设在 MySQL 中工作的东西在 Aurora 中也会以同样的方式工作。它们实际上是不同的软件产品。MySQL 是开源的,Aurora 不是。

于 2019-07-17T18:41:52.767 回答