Come si verifica la corretta esecuzione di una query?

Ho fatto il dump di un database tramite phpmyadmin

tutto il database è stato esportato in un file.sql contenente tutti i comandi sql necessari per ricostruire il db da zero.

Poi lato yii inserisco il contenuto del file.sql dentro una variabile $contenutoSql

eseguo:


Yii::app()->db->createCommand($contenutoSql)->query();

e funziona! Il database viene ricostruito completamente.

Però poi ho ritoccato il file.sql commettendo un errore di sintassi.

Rilancio la procedura e yii non mi avverte dell’errore.

Me ne sono accorto perché il db è stato ricostruito a metà.

Sapete come si faccia per verificare che tutti i comandi sql contenuti nel file.sql vengano eseguiti con successo e magari visualizzare l’errore di dove si blocca?

Ti sconsiglio di fare queste cose a mano. Molto meglio usare le migrate. Le migrate ti permettono di memorizzare tutti i cambi di database: cambi di valore, creazione di tabelle, alterazioni, … Attraverso la console è possibile anche ripristinare vecchie versioni del database.

Ma anche supponendo di usare le migrate,

ho comunque necessità di eseguire una decina di comandi sql customizzati.

E’ possibile sapere se l’sql che vado ad eseguire va a buon fine oppure no? E come si fa?

Non sto capendo qual’è il problema che devi risolvere.

In ogni caso, se devi solo controllare l’esecuzione di una query. Puoi usare usare if(Yii::app->db->createCommand()->execute()) … Puoi usare le transazioni. Dipende da che cosa devi fare, ma sopratutto da cosa non riesci a fare.