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 节,“如何报告错误或问题” 中的说明提交错误报告。