The fatal error is not in MySQL; the missing index notification is a relatively low-severity warning.
The fatal error is in your PHP code, because of the following three conditions:
- mysqli reports a lot of warnings, even for relatively harmless conditions.
- You’re throwing
mysqli_sql_exception
for all errors and warnings due to yourmysqli_report(MYSQLI_REPORT_ALL);
line. - Your PHP code is not catching that exception (i.e. it’s not in a
try{}
block with an appropriatecatch(){}
block), and uncaught exceptions are fatal.
You can’t do much about the first one, as mentioned in the other answer. So, you can fix it either by changing your mysqli_report(...)
setting to MYSQLI_REPORT_STRICT
or MYSQLI_REPORT_OFF
, or indeed anything other than MYSQLI_REPORT_ALL
.
(edit: w3d’s comment below gives a good explanation why, and suggests you could use mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)
as a good alternative)
For best practices, and in combination with this, you should fix it properly by using try{}
and catch(){}
appropriately within your code.