我需要这个查询来测试异常处理,所以我宁愿查询不依赖于模式。我正在寻找类似SELECT 1;
的东西,但当然不会失败。如何编写失败的SQL查询?
我正在使用Java和MySQL,但我希望找到不依赖于编程语言和/或RDBMS的答案。
我需要这个查询来测试异常处理,所以我宁愿查询不依赖于模式。我正在寻找类似SELECT 1;
的东西,但当然不会失败。如何编写失败的SQL查询?
我正在使用Java和MySQL,但我希望找到不依赖于编程语言和/或RDBMS的答案。
有吨的方式来进行查询失败,如拼写错误的字段,或者不存在的表中选择。例如:
SELECT some_fake_field FROM table_that_doesnt_exists
触发失败的一种方法是调用具有错误数量参数的存储过程。另一个类似的想法是写一个更新/插入语句与错误的参数数目......
什么是“选择1/0”对于初学者?
在MySQL中似乎不起作用:返回NULL。 – muhuk
好吧,这是烦人的,恕我直言不行为我会认为正确的默认,但我不是MySQL的家伙:)请参阅下面有关sql_mode设置(当然,这不符合RDBMS独立的这个答案)@HeadofCatering评论。也是不同类型的例外情况,例如,您可能或很多不想测试的语法错误与引擎错误 - 不知道您正在测试的方式/内容,这些异常可能是否可能通过您的应用程序采用不同的路径? –
你可以把一个无效的令牌到查询
select doesnotexist.* from something_else
当然还是,你应该做的是模拟出来的方法,并将它在测试期间抛出异常。
任何旧的语法错误会做...就像一个未终止字符串
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;
你为什么不花点时间指出什么地方错了这个问题,你downvote之前? – muhuk