我需要此查询来测试异常处理,所以我更希望查询不依赖于模式。我正在寻找类似SELECT 1;
的东西,但当然不会失败。
我正在使用Java和MySQL,但我希望找到不依赖于编程语言和/或RDBMS的答案。
答案 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)
触发失败的一种方法是使用错误数量的参数调用存储过程。另一个类似的想法是使用错误数量的参数编写更新/插入语句...
答案 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;