无法从数据库中删除...?

时间:2008-09-09 21:36:35

标签: database db2

所以,我有2个数据库实例,一个用于一般开发,另一个用于开发单元测试。

开发数据库中发生了一些我无法弄清楚的变化,我不知道如何看待有什么不同。

当我尝试从特定表中删除时,例如:

delete from myschema.mytable where id = 555

我从单元测试DB得到以下正常响应,表示没有删除行:

  

SQL0100W找不到FETCH,UPDATE或DELETE的行;或者查询结果是一个空表。 SQLSTATE = 02000

但是,开发数据库完全无法删除,并出现以下错误:

  

DB21034E该命令作为SQL语句处理,因为它不是有效的命令行处理器命令。在SQL处理期间,它返回:SQL0440N找不到具有兼容参数的类型为“FUNCTION”的名为“=”的授权例程。 SQLSTATE = 42884

我最好的猜测是有一些触发器或视图被添加或更改导致问题,但我不知道如何找到问题...有没有人有这个问题或知道如何弄清楚问题的根源是什么?

(请注意,这是一个DB2数据库)

7 个答案:

答案 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)

@castaway

具有相同“where”条件的选择工作正常,只是不删除。 runstats和reorg table都不会对问题产生任何影响。

答案 5 :(得分:0)

@castaway

我们实际上刚解决了这个问题,事实上它正是你所说的(同事也发现了完全相同的页面)。

解决方案是删除外键约束并重新添加它们。

关于这个问题的另一篇文章:

http://www.ibm.com/developerworks/forums/thread.jspa?threadID=208277&tstart=-1

这表明问题是参考约束损坏,并且实际上或者据说无论如何都在db2 V9的更高版本中修复(我们还没有使用)。

感谢您的帮助!

答案 6 :(得分:0)

请检查 1.你的触发器,程序,功能等的论点 2.参数的数据类型。

相关问题