如何编写失败的SQL查询?

时间:2013-06-04 04:16:28

标签: mysql sql testing assertions

我需要此查询来测试异常处理,所以我更希望查询不依赖于模式。我正在寻找类似SELECT 1;的东西,但当然不会失败。

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

6 个答案:

答案 0 :(得分:5)

初学者的“SELECT 1/0”怎么样?

答案 1 :(得分:4)

您可以将无效令牌放入查询

select doesnotexist.* from something_else

当然,你应该做的是模拟方法,并在测试期间抛出异常。

答案 2 :(得分:2)

有很多方法可以使查询失败,例如拼错字段或从非现有表中进行选择。例如:

SELECT some_fake_field FROM table_that_doesnt_exists

答案 3 :(得分:1)

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

这里有更多想法: How to raise an error within a MySQL function

答案 4 :(得分:0)

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

select 'bob

答案 5 :(得分:0)

要获得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;