1

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

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

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

delete from myschema.mytable where id = 555

我从单元测试数据库中得到以下正常响应,表明没有删除任何行:

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

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

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

我最好的猜测是添加或更改了一些触发器或视图导致问题,但我不知道如何去寻找问题......有没有人遇到这个问题或知道如何找出根源的问题是?

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

4

7 回答 7

1

嗯,将伟大的预言应用于这个问题,我想出了:

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

似乎表明另一个表有一个指向有问题的表的外键,当另一个表上的 FK 被删除时,删除应该再次起作用。(大概您也可以重新创建外键)

这有帮助吗?

于 2008-09-10T00:37:44.630 回答
0

您可能在 dev db 上有一个开放的事务......这有时会让我在 SQL Server 上

于 2008-09-09T21:53:22.543 回答
0

id的类型是否兼容555?还是改成非整数类型了?

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

于 2008-09-09T22:05:39.677 回答
0

您可以在您的问题中添加更多内容吗?该错误听起来像 sql 语句解析器对您的语句非常困惑。您可以在该表上为 id = 555 的行进行选择吗?

您可以尝试在该表上运行 RUNSTATS 和 REORG TABLE,这些应该可以整理出不稳定的表。

于 2008-09-09T23:47:41.897 回答
0

@抛弃

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

于 2008-09-09T23:59:37.403 回答
0

@抛弃

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

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

关于该主题的另一篇文章:

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

这表明该问题是一个引用约束损坏,并且实际上或假定无论如何,已在更高版本的 db2 V9(我们尚未使用)中修复。

谢谢您的帮助!

于 2008-09-10T00:45:27.263 回答
0

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

于 2008-10-02T16:37:20.063 回答