我正在制作一个简单的工具,它将获得一串MySQL命令并运行它(依次在多个数据库服务器上运行)。我相信用户是明智的,但出现错误,我正在寻找一种方法来防止基本的错别字:如何检查MySQL查询是否有效而不执行?
有没有办法在运行时验证(相对简单)MySQL查询,重新语法正确?
我不是在寻找语义的正确性,例如表名或加入适用性;就像SQL查询的拼写检查一样。
换句话说,
SELECT * FROM x;
或
INSERT INTO x SET id=1,bar="foo";
将被标记为有效,而任何这些不会:
SELECT FROM x;
SECLET * RFOM x;
ISNETR INTO x SET id=1;
HJBGYGCRYTCY;
对于SELECT
S,我可以弯曲EXPLAIN
根据我的需要 - 运行EXPLAIN SELECT (...)
并注意错误,但是有没有是否也检查其他命令?
我正在寻找一种在脚本执行之前检查查询的快速方法。编写一个解析器可能会过度 - 如果它在第一台服务器上出现故障,它就会退出并显示一个错误(据说脚本用户(系统管理员)已经足够清楚了解他们在做什么)。 – Piskvor 2008-12-18 14:09:40
+1准备。这是我知道的唯一方法。 – willasaywhat 2008-12-18 20:25:19