Troufnul bych si říct, že je to bug. Našel jsem dva relevantní lístky:
- Chyba #63812 :Upozornění(a) spouštěče PDO bez ohledu na strategii zpracování chyb, podáno v roce 2012 pro PHP/5.3.19
- Chyba č. 74401 :Varování spouštěče PDO již nastaveno výjimku vyvolání, podáno v roce 2017 pro PHP/7.0.17
V každém případě jsou stále otevřené a není zcela jasné, zda se jedná o platné problémy (i když mám podezření, že ano). Nezdá se, že by to bylo rozhodnutí o návrhu, protože jiné chyby MySQL nespouštějí obojí, varování i výjimku:
$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');