sql >> データベース >  >> RDS >> Mysql

致命的なエラー:キャッチされない例外'mysqli_sql_exception'とメッセージ'クエリ/プリペアドステートメントでインデックスが使用されていません'

    致命的なエラーはMySQLにはありません。インデックスの欠落通知は、比較的重大度の低い警告です。

    致命的 次の3つの条件が原因で、PHPコードにエラーがあります。

    • mysqliはロットを報告します 比較的無害な状態であっても、警告の数。
    • mysqli_sql_exceptionをスローしています すべてのエラーおよび mysqli_report(MYSQLI_REPORT_ALL);による警告 行。
    • PHPコードがその例外をキャッチしていません(つまり、try{}に含まれていません 適切なcatch(){}でブロックする ブロック)、およびキャッチされない例外は致命的です。

    他の答えで述べられているように、あなたは最初のものについて多くをすることはできません。したがって、mysqli_report(...)を変更することで修正できます。 MYSQLI_REPORT_STRICTに設定 またはMYSQLI_REPORT_OFF 、または実際にMYSQLI_REPORT_ALL以外のもの 。

    (編集:以下のw3dのコメントは、その理由を説明し、mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)を使用できることを示唆しています。 良い代替手段として)

    ベストプラクティスについては、これと組み合わせて、try{}を使用して適切に修正する必要があります。 およびcatch(){} コード内で適切に。



    1. CASE条件とSUM()を使用したSELECTクエリ

    2. MySQLからJSONデータを取得する方法は?

    3. ストアドプロシージャのselectステートメントで変数を使用して列名を渡す必要がありますが、動的クエリを使用できません

    4. SQLiteデータベースへのアクティビティとバックグラウンドサービスのアクセス