Mysql
 sql >> Database >  >> RDS >> Mysql

rilevare errori MySQL senza eseguirlo

EXPLAIN fa il trucco se stai utilizzando MySQL 5.6 o versioni successive.

explain update whatever;

Se la query è corretta, mostra il piano di esecuzione. Altrimenti, restituisce l'errore di sintassi.

Se stai eseguendo una versione inferiore di MySQL, vedo alcune opzioni:

  1. L'opzione consigliata :Tieni pronto un database di prova che rispecchi il tuo database di produzione almeno nella struttura . Idealmente, riempirlo con dati di test per verificare che la query non sia solo sintatticamente corretta; ma che funziona come previsto .
  2. Esegui la query nell'ambito di una TRANSAZIONE che viene immediatamente ripristinato.
  3. Esegui una versione della query leggermente modificata in modo che corrisponda a NO ROWS.

Ad esempio:

update table set col1 = @val1 where col2 = @val2;

Diventa:

update table set col1 = @val1 where (col2 = @val2) and 1=0;

Quindi, se stai utilizzando 5.6 o versioni successive, EXPLAIN il trucco è pulito. In caso contrario, anche le opzioni 2 e 3 dell'elenco sono trucchi puliti (ish). Ma in genere dovresti avere uno sviluppo server con il tuo in sviluppo comunque domande.