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 傾印表格來建立測試檔案。在編輯器中開啟檔案,移除一些插入列 (如果有的話,多於演示問題所需的行),然後在檔案末尾新增您的SELECT
陳述式。透過執行這些命令來驗證測試檔案是否演示了問題
$> mysqladmin create test2 $> mysql test2 < query.sql
將測試檔案附加到錯誤報告中,您可以使用第 1.6 節,〈如何報告錯誤或問題〉中的指示提交錯誤報告。