Mysql
 sql >> Base de données >  >> RDS >> Mysql

détecter les erreurs mysql sans l'exécuter

EXPLIQUER fait l'affaire si vous utilisez MySQL 5.6 ou supérieur.

explain update whatever;

Si la requête est correcte, elle affiche le plan d'exécution. Sinon, il renvoie l'erreur de syntaxe.

Si vous utilisez une version inférieure de MySQL, je vois quelques options :

  1. L'option recommandée  :Ayez une base de données de test prête qui reflète votre base de données de production au moins dans la structure . Idéalement, remplissez-le avec des données de test pour vérifier que la requête n'est pas seulement syntaxiquement correcte ; mais qu'il fonctionne comme prévu .
  2. Exécutez la requête dans le cadre d'une TRANSACTION qui est immédiatement annulée.
  3. Exécuter une version de la requête légèrement modifiée pour correspondre à NO ROWS.

Par exemple :

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

Devient :

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

Donc, si vous utilisez la version 5.6 ou supérieure, le EXPLAIN l'astuce est soignée. Sinon, les options 2 et 3 de la liste sont également des astuces intéressantes. Mais, vous devriez généralement toucher un développement serveur avec votre en développement requêtes quand même.