Ho un file schema SQL (con errore di sintassi), tra cui più query per database delle impostazioniDoctrine (DBAL) Gestione degli errori durante l'esecuzione di più query
example.sql
CREATE TABLE IF NOT EXISTS `example` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
CREATExxxxxxxxxx TABLE IF NOT EXISTS `example2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
example.php
$sqlContent = file_get_contents("example.sql");
$stmt = $conn->prepare($sqlContent);
$result = $stmt->execute();
metodo execute non genera alcuna eccezione anche che il mio SQL è i nCorreggere. la documentazione dice che restituisce false
in caso di fallimento ma restituisce true
.
Come devo fare la gestione delle eccezioni qui? Come posso verificare se la mia query ha un errore?
Dottrina DBAL usa il m ysqli driver. Ho controllato l'ultimo codice e il DBAL dovrebbe generare un'eccezione quando la preparazione di mysqli restituisce false per gli errori di sintassi. Problema con il driver mysqli? http://www.doctrine-project.org/api/dbal/2.5/source-class-Doctrine.DBAL.Driver.Mysqli.MysqliStatement.html#83-102 –
@MattS il problema non si trova nel DBAL di Doctrine, è in DOP. Ho aggiunto la mia risposta. – Neodan