MySQL 8.0 リファレンスマニュアル


B.3.4.7 一致する行がない場合の問題の解決

多数のテーブルを使用する複雑なクエリーで行が返されない場合は、次の手順を使用して問題を判別してください。

  1. EXPLAIN を指定してクエリーをテストし、明らかな間違いが見つかるかどうかを確認します。 セクション13.8.2「EXPLAIN ステートメント」を参照してください。

  2. WHERE 句で使用されているカラムのみを選択します。

  3. 行が返されるまで、クエリーから一度に 1 つずつテーブルを削除します。 テーブルが大きい場合、クエリーに LIMIT 10を使用するのは良い方法です。

  4. クエリーから最後に削除したテーブルに対して一致する行を持つカラムに SELECT を発行します。

  5. FLOAT カラムまたは DOUBLE カラムと 10 進数の数値を比較している場合、等式 (=) 比較は使用できません。 すべての浮動小数点値が正確な精度で格納されるとはかぎらないため、この問題はほとんどのコンピュータ言語で一般的です。 FLOATDOUBLE に変更すると解決することがあります。 セクションB.3.4.8「浮動小数点値に関する問題」を参照してください。

  6. 問題がまだ特定されない場合は、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

    テストファイルをバグレポートに添付します (セクション1.6「質問またはバグをレポートする方法」の手順を参照してください)。


関連キーワード:  テーブル, 一般, 方法, クエリー, エラー, カラム, テスト, サーバー, 接続, 削除