繁体   English   中英

如何编写失败的SQL查询?

[英]How do I write an SQL query that fails?

我需要此查询来测试异常处理,因此我希望查询不依赖于架构。 我正在寻找类似SELECT 1;东西SELECT 1; 但是那当然不会失败。

我正在使用Java和MySQL,但我希望找到不依赖于编程语言和/或RDBMS的答案。

初学者的“ SELECT 1/0”呢?

您可以在查询中放入无效的令牌

select doesnotexist.* from something_else

或者,当然,您应该做的是模拟该方法,并在测试期间使其抛出异常。

有很多方法可以使查询失败,例如拼写错误的字段或从不存在的表中选择。 例如:

SELECT some_fake_field FROM table_that_doesnt_exists

触发失败的一种方法是使用错误数量的参数调用存储过程。 另一个类似的想法是用错误数量的参数编写更新/插入语句。

更多信息,请参见: 如何在MySQL函数中引发错误

任何旧的语法错误都可以...就像未终止的字符串

select 'bob

要获得1/0以在MySQL中引发错误,您需要将sql_mode设置为ERROR_FOR_DIVISION_BY_ZERO。

尝试这个:

SET sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO';
SELECT 1/0;

如果未设置此sql_mode,则MySQL将返回NULL而不是错误。

您可以使用以下方法检查当前设置:

SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;

暂无
暂无

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

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