Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Błąd krytyczny:Nieprzechwycony wyjątek „mysqli_sql_exception” z komunikatem „W zapytaniu/przygotowanej instrukcji nie użyto indeksu”

Błąd krytyczny nie występuje w MySQL; powiadomienie o braku indeksu jest ostrzeżeniem o stosunkowo niskiej wadze.

śmiertelny w twoim kodzie PHP jest błąd, z powodu następujących trzech warunków:

  • mysqli zgłasza dużo ostrzeżeń, nawet w przypadku stosunkowo nieszkodliwych warunków.
  • Wyrzucasz mysqli_sql_exception dla wszystkich błędów i ostrzeżenia z powodu Twojego mysqli_report(MYSQLI_REPORT_ALL); linia.
  • Twój kod PHP nie przechwytuje tego wyjątku (tzn. nie znajduje się w try{} blok z odpowiednim catch(){} bloku), a niewyłapane wyjątki są fatalne.

Nie możesz wiele zrobić z pierwszym, jak wspomniano w drugiej odpowiedzi. Możesz to naprawić, zmieniając swój mysqli_report(...) ustawienie na MYSQLI_REPORT_STRICT lub MYSQLI_REPORT_OFF lub cokolwiek innego niż MYSQLI_REPORT_ALL .

(edycja:komentarz w3d poniżej podaje dobre wyjaśnienie dlaczego i sugeruje, że możesz użyć mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT) jako dobra alternatywa)

Aby uzyskać najlepsze praktyki i w połączeniu z tym, powinieneś to naprawić poprawnie, używając try{} i catch(){} odpowiednio w kodzie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - ORDER BY wartości w IN()

  2. Alternatywy MySQL Workbench — GUI typu „wskaż i kliknij” ClusterControl

  3. Jak opróżnić bazę danych MySQL

  4. Jak używać natywnego hasła w MySQL 5.7

  5. Jak uciec od apostrofu (') w MySQL?