所以,我有2个数据库实例,一个用于一般开发,另一个用于开发单元测试。
开发数据库中发生了一些我无法弄清楚的变化,我不知道如何看待有什么不同。
当我尝试从特定表中删除时,例如:
delete from myschema.mytable where id = 555
我从单元测试DB得到以下正常响应,表示没有删除行:
SQL0100W找不到FETCH,UPDATE或DELETE的行;或者查询结果是一个空表。 SQLSTATE = 02000
但是,开发数据库完全无法删除,并出现以下错误:
DB21034E该命令作为SQL语句处理,因为它不是有效的命令行处理器命令。在SQL处理期间,它返回:SQL0440N找不到具有兼容参数的类型为“FUNCTION”的名为“=”的授权例程。 SQLSTATE = 42884
我最好的猜测是有一些触发器或视图被添加或更改导致问题,但我不知道如何找到问题...有没有人有这个问题或知道如何弄清楚问题的根源是什么?
(请注意,这是一个DB2数据库)
答案 0 :(得分:1)
http://bytes.com/forum/thread830774.html
似乎建议另一个表有一个指向有问题的外键,当另一个表上的FK被删除时,删除应该再次起作用。 (可能你也可以重新创建外键)
这对你有帮助吗?
答案 1 :(得分:0)
您可能在dev db上有一个打开的事务...有时会让我在SQL Server上
答案 2 :(得分:0)
id的类型是否与555兼容?或者它已被更改为非整数类型?
或者,555参数是否会以某种方式丢失(例如,如果您使用JDBC并且预处理语句在执行查询之前未设置其参数)?
答案 3 :(得分:0)
您可以在问题中添加更多内容吗?这个错误听起来像sql语句解析器对你的语句非常困惑。你可以在那张桌子上为id = 555的行做一个选择吗?
您可以尝试在该表上运行RUNSTATS和REORG TABLE,这些应该可以排除不稳定的表。
答案 4 :(得分:0)
具有相同“where”条件的选择工作正常,只是不删除。 runstats和reorg table都不会对问题产生任何影响。
答案 5 :(得分:0)
我们实际上刚解决了这个问题,事实上它正是你所说的(同事也发现了完全相同的页面)。
解决方案是删除外键约束并重新添加它们。
关于这个问题的另一篇文章:
http://www.ibm.com/developerworks/forums/thread.jspa?threadID=208277&tstart=-1
这表明问题是参考约束损坏,并且实际上或者据说无论如何都在db2 V9的更高版本中修复(我们还没有使用)。
感谢您的帮助!
答案 6 :(得分:0)
请检查 1.你的触发器,程序,功能等的论点 2.参数的数据类型。