2008-09-09 121 views
1

因此,我有2个数据库实例,一个用于一般开发,另一个从开发中复制用于单元测试。无法从数据库中删除...?

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

当我试图从特定表中删除,有例如:

delete from myschema.mytable where id = 555 

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

SQL0100W No row was found for FETCH, UPDATE or DELETE; or the result of a query is an empty table. SQLSTATE=02000

然而,开发数据库根本无法删除,但出现以下错误:

DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL0440N No authorized routine named "=" of type "FUNCTION" having compatible arguments was found. SQLSTATE=42884

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

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

回答

1

嗯,应用大预言到这个问题,我想出了:

http://bytes.com/forum/thread830774.html

这似乎表明,另一个表具有在有问题的一个外键指向,当FK上其他表被删除,删除应该再次工作。 (推测你也可以重新创建外键)

这有帮助吗?

0

您可能对开发数据库...这让我有时SQL服务器

0

上的ID与555兼容类型打开的事务?或者它已被更改为非整数类型?

或者,555参数是否会丢失(例如,如果您正在使用JDBC并且准备好的语句在执行查询之前没有设置其参数)?

0

你可以添加更多的问题吗?这个错误听起来像是sql语句解析器对你的语句非常困惑。你可以在该表上选择id = 555的行吗?

你可以试着在那个表上运行一个RUNSTATS和REORG TABLE,这些应该是为了整理不好的表。

0

@castaway

一个选择具有相同“其中”条件下工作得很好,只是没有删除。 runstats和reorg table都不会对问题产生任何影响。

0

@castaway

我们实际上只是解决了这个问题,而且的确是你说的去做(同事发现完全相同的页面太)。

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

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

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

这表明问题是参照约束腐败,其实,还是所谓反正,固定在DB2 V9的更高版本(我们是尚未使用)。

感谢您的帮助!

0

请检查 1.您的触发器,程序,函数等的参数 2.参数的数据类型。