MySQL 8.4 版本说明
如果您的查询很复杂,使用了多个表,但没有返回任何行,您应该使用以下步骤来找出问题所在。
使用
EXPLAIN
测试查询,以检查是否可以找到明显错误的地方。参见 第 15.8.2 节,“EXPLAIN 语句”。只选择
WHERE
子句中用到的列。一次从查询中删除一个表,直到查询返回一些行。如果表很大,最好在查询中使用
LIMIT 10
。针对从查询中最后删除的表,对应该与行匹配的列发出
SELECT
查询。如果要将
FLOAT
或DOUBLE
列与带小数的数字进行比较,则不能使用等号 (=
) 比较。这个问题在大多数计算机语言中都很常见,因为并非所有浮点数都能以完全精确的方式存储。在某些情况下,将FLOAT
更改为DOUBLE
可以解决这个问题。参见 第 B.3.4.8 节,“浮点数问题”。如果仍然无法找出问题所在,请创建一个可以使用
mysql test < query.sql
运行的最小测试,以显示您的问题。您可以通过使用 mysqldump --quick db_nametbl_name_1
...tbl_name_n
> query.sql 导出表来创建测试文件。在编辑器中打开文件,删除一些 insert 行(如果数量超过演示问题所需的數量),并在文件末尾添加SELECT
语句。通过执行以下命令验证测试文件是否能演示问题。
$> mysqladmin create test2 $> mysql test2 < query.sql
将测试文件附加到错误报告中,您可以按照 第 1.6 节,“如何报告错误或问题” 中的说明提交错误报告。