我需要这个查询来测试异常处理,所以我希望查询不依赖于模式。我正在寻找类似的东西,SELECT 1;
但当然不会失败。
我正在使用 Java 和 MySQL,但我希望找到不依赖于编程语言和/或 RDBMS 的答案。
我需要这个查询来测试异常处理,所以我希望查询不依赖于模式。我正在寻找类似的东西,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
要在 MySQL 中获得 1/0 引发错误,您需要将 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;