错误代码SQLCODE:-964

时间:2017-01-10 05:46:26

标签: sql db2

我正在执行一个选择查询。当表的数量为10或更少时,则10个查询正在执行。

select * from  SERVEIT.ibasemaster,
SERVEIT.ticket,
SERVEIT.PSEUDOTICKETDETAILS,
SERVEIT.ticketdetails,
SERVEIT.obligationtypemaster,
SERVEIT.STATUSMASTER;

但是当表的数量增加超过10时,查询不会执行并提供错误代码"DB2 SQL Error: SQLCODE=-968, SQLSTATE=57011, SQLERRMC=null, DRIVER=4.21.29"。我搜索了这个问题,并了解这是一个空间大小的问题。 我已将logproimary大小增加到8,将logsecond大小增加到16,但这也无效。

2 个答案:

答案 0 :(得分:1)

在以下查询中

4  | xyz  | 1              |1       | 4

您正在进行的是列出的六个表之间的交叉连接,因为没有select * from SERVEIT.ibasemaster, SERVEIT.ticket, SERVEIT.PSEUDOTICKETDETAILS, SERVEIT.ticketdetails, SERVEIT.obligationtypemaster, SERVEIT.STATUSMASTER; 子句,ON子句中也没有任何连接条件。我的猜测是,当你点击10个表时,结果集变得如此之大,以至于它无法容纳到内存中,或者超出了DB2强加的内存限制。

如果您真的打算进行交叉连接,那么您唯一的选择可能是以某种方式增加内存。但更好的解决方案是添加WHERE子句并限制连接结果集的大小。

答案 1 :(得分:0)

你可能在select子句的不同表中有相同的列,你必须在select中有所有列的uniqu name