繁体   English   中英

检测mysql错误而不执行它

[英]detect mysql errors without executing it

假设我查询“ UPDATE table SET etc etc

然后我“执行”这个查询

如果查询正常,则执行,如果查询有错误,则返回mysql错误

我的问题是......有没有办法做到以下几点:

如果查询有错误,它将返回mysql错误。 但是,如果查询正常,请不要执行,而只是说查询没问题

换句话说,有没有办法检查mysql是否接受我的查询而没有在没有错误的情况下实际修改数据库中的条目?

如果您运行的是MySQL 5.6或更高版本,则EXPLAIN可以解决问题。

explain update whatever;

如果查询正常,则显示执行计划。 否则,它返回语法错误。


如果你运行的是较小版本的MySQL,我会看到一些选项:

  1. 建议的选项 :准备一个测试数据库,至少在结构中镜像生产数据库。 理想情况下,它填充测试数据以验证查询不仅在语法上是正确的; 但它按预期工作
  2. 在立即回滚的TRANSACTION范围内运行查询。
  3. 运行略微修改的查询版本以匹配NO ROWS。

例如:

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

变为:

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

所以,如果你运行5.6或更高版本,那么EXPLAIN技巧很简洁。 如果没有,列表中的选项2和3也是巧妙的(ish)技巧。 但是,无论如何,您通常应该使用开发 中的查询来访问开发服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM