假设我查询“ UPDATE table SET etc etc
”
然后我“执行”这个查询
如果查询正常,它会执行,如果查询有错误,它将返回 mysql 错误
我的问题是......有没有办法做到以下几点:
如果查询有错误,它将返回 mysql 错误。但是,如果查询没问题,不要执行,而是说查询没问题
换句话说,如果没有错误,有没有办法检查 mysql 是否会接受我的查询而不实际修改数据库中的条目?
如果您运行的是 MySQL 5.6 或更高版本, EXPLAIN就可以解决问题。
explain update whatever;
如果查询正常,则显示执行计划。否则,它会返回语法错误。
如果您运行的是较低版本的 MySQL,我会看到一些选项:
例如:
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)技巧。但是,无论如何,您通常应该使用开发中的查询访问开发服务器。