Estoy haciendo una herramienta simple que obtendrá una cadena de comandos MySQL y ejecutarlo (en varios servidores DB secuencialmente). Confío en que los usuarios sean sensatos, pero suceden errores, y estoy buscando una manera de evitar errores tipográficos básicos:¿Cómo comprobar si la consulta MySQL es válida sin ejecutarla?
¿Hay alguna manera de validar, en tiempo de ejecución, (relativamente simples) consultas de MySQL para ver si ' re sintácticamente correcto?
No estoy buscando corrección semántica, p. nombres de tablas o aplicabilidad de unión; algo así como un corrector ortográfico para consultas SQL.
En otras palabras,
SELECT * FROM x;
o
INSERT INTO x SET id=1,bar="foo";
estaría marcada válida, mientras que ninguno de los que no lo haría:
SELECT FROM x;
SECLET * RFOM x;
ISNETR INTO x SET id=1;
HJBGYGCRYTCY;
Para SELECT
s, podía doblar EXPLAIN
a mis necesidades - ejecuta EXPLAIN SELECT (...)
y busca errores, pero ¿hay algún problema? ¿para verificar otros comandos también?
Estaba buscando una forma rápida de verificar las consultas antes de que el script las ejecute. Escribir un analizador sería demasiado: si se rompe en el primer servidor, simplemente saldrá con un error (supuestamente los usuarios del script (administradores del sistema) están lo suficientemente sanos como para saber lo que están haciendo). – Piskvor
+1 Para prepararse. Esa es la única forma de hacerlo, que yo sepa. – willasaywhat
Parece que MySQL no puede ejecutar PREPARE en un db vacío. Y algunos errores sintácticos no se muestran, por ejemplo, dos campos con el mismo nombre. – powtac