sql >> Databasteknik >  >> RDS >> Mysql

Fatalt fel:Oupptäckt undantag 'mysqli_sql_exception' med meddelandet 'Inget index används i fråga/förberedd sats'

Det fatala felet finns inte i MySQL; det saknade indexmeddelandet är en varning med relativt låg stränghet.

Den dödliga fel finns i din PHP-kod, på grund av följande tre villkor:

  • mysqli rapporterar mycket av varningar, även för relativt ofarliga förhållanden.
  • Du kastar mysqli_sql_exception för alla fel och varningar på grund av din mysqli_report(MYSQLI_REPORT_ALL); rad.
  • Din PHP-kod fångar inte det undantaget (dvs. den är inte i ett try{} block med en lämplig catch(){} block), och oupptäckta undantag är dödliga.

Du kan inte göra så mycket åt det första, som nämnts i det andra svaret. Så du kan fixa det antingen genom att ändra din mysqli_report(...) inställning till MYSQLI_REPORT_STRICT eller MYSQLI_REPORT_OFF , eller faktiskt något annat än MYSQLI_REPORT_ALL .

(edit:w3ds kommentar nedan ger en bra förklaring till varför, och föreslår att du kan använda mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT) som ett bra alternativ)

För bästa praxis, och i kombination med detta, bör du fixa det ordentligt genom att använda try{} och catch(){} lämpligt i din kod.



  1. Dynamisk SQL-resultat till temporär tabell i SQL Stored-procedur

  2. SQL Oracle LEFT JOIN och SUBQUERY-fel:ORA-00905:sökord saknas

  3. Hur Tanh() fungerar i PostgreSQL

  4. Varför börjar tabellnamn i SQL Server med dbo?