Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PDO::ERRMODE_EXCEPTION não suprime o aviso


Atrevo-me a dizer que é um bug. Encontrei dois tickets relevantes:
  • Bug #63812 :PDO aciona aviso(s) independente da estratégia de tratamento de erros, arquivado em 2012 para PHP/5.3.19
  • Bug #74401 :Aviso de gatilho PDO já definido exceção de lançamento, arquivado em 2017 para PHP/7.0.17

De qualquer forma, eles ainda estão abertos e não está totalmente claro se são problemas válidos (embora eu suspeite que sejam). Não parece ser uma decisão de design porque outros erros do MySQL não acionam ambos, aviso e exceção:
$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');