top
Loading...
A.5.7.解決與不匹配行有關的問題
A.5.7. 解決與不匹配行有關的問題

如果有使用了很多表的復雜查詢,但未返回任何行,應采用下述步驟找出什么出錯:

EXPLAIN測試查詢,以檢查是否發現某事顯然出錯。請參見7.2.1節,“EXPLAIN語法(獲取關于SELECT的信息)”。

僅選擇在WHERE子句中使用的列。

從查詢中1次刪除1個表,直至返回了某些行為止。如果表很大,較好的主意是在查詢中使用LIMIT 10

對于具有與上次從查詢中刪除的表匹配的行的列,發出SELECT查詢。

如果將FLOATDOUBLE列與具有數值類型的數值進行比較,不能使用等式(=)比較。在大多數計算機語言中,該問題很常見,這是因為,并非所有的浮點值均能以準確的精度保存。在某些情況下,將FLOAT更改為DOUBLE可更正該問題。請參見A.5.8節,“與浮點比較有關的問題”。

如果仍不能找出問題之所在,請創建能與顯示問題的“mysql test < query.sql”一起運行的最小測試。通過使用mysqldump --quick db_name tbl_name_1 ... tbl_name_n > query.sql轉儲表,可創建測試文件。在編輯器中打開文件,刪除某些插入的行(如果有超出演示問題所需的行),并在文件末尾添加SELECT語句。

通過執行下述命令,驗證測試文件能演示問題:

shell> mysqladmin create test2
shell> mysql test2 < query.sql

使用mysqlbug將測試文件張貼到喲娜通用MySQL郵件列表。請參見1.7.1.1節,“The MySQL郵件列表”。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/problems.html
北斗有巢氏 有巢氏北斗