Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PDO::ERRMODE_EXCEPTION unterdrückt keine Warnung

Ich wage zu behaupten, dass es ein Bug ist. Ich habe zwei relevante Tickets gefunden:

  • Fehler #63812 :PDO löst Warnung(en) unabhängig von der Fehlerbehandlungsstrategie aus, eingereicht am 2012 für PHP/5.3.19
  • Fehler Nr. 74401 :PDO-Trigger-Warnung hat bereits Throw-Exception gesetzt, eingereicht am 2017 für PHP/7.0.17

Auf jeden Fall sind sie noch offen und es ist nicht ganz klar, ob es sich um gültige Probleme handelt (obwohl ich vermute, dass sie es sind). Es scheint keine Designentscheidung zu sein, da andere MySQL-Fehler nicht sowohl Warnung als auch Ausnahme auslösen:

$connection = new PDO('mysql:host=127.0.0.1;dbname=test', 'test', 'test',
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING]);
$connection->query('SELECT * FROM foo');
$connection = new PDO('mysql:host=127.0.0.1;dbname=test', 'test', 'test',
    [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$connection->query('SELECT * FROM foo');