У меня сработало, когда для PDO ATT_ERRMODE установлено значение ERRMODE_EXCEPTION.
$user = 'test';
$pass = 'test';
$opt = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
$db = new PDO('mysql:host=localhost;dbname=test;charset=utf8' ,
$user ,
$pass ,
$opt
);
try {
$query = $db->query("SELECT 1 FROM `classes` LIMIT 1");
} catch (Exception $e) {
$query = $db->prepare("CREATE TABLE `classes`(
`ID_class` int(11) AUTO_INCREMENT,
`name` varchar(255),
PRIMARY KEY(`ID_class`))");
$query->execute();
}