如何解决使用 INSERT .... SELECT 时的“已在缓存中”错误

问题描述 投票:0回答:1

我通过 JDBC 10800 连接到 Ignite,并尝试将一行插入到具有三列的表中。

 - THE_KEY
 - MY_OTHER_ID
 - SOME_DATA

如果我尝试插入具有相同 THE_KEY 值的第二条记录,我会收到常规 SQL 错误,告诉我正在尝试插入重复项。到目前为止一切顺利。

但是,当我从表开始,并执行以下操作时:

INSERT INTO MY_TABLE (THE_KEY, MY_OTHER_ID, SOME_DATA)
SELECT ?, ?, ?
WHERE NOT EXISTS (SELECT 1 from MY_TABLE WHERE MY_OTHER_ID = ?)

我收到一条错误消息:

OperationError: 50000: Failed to INSERT some keys because they are already in cache [keys=[123]]

一些额外的事实:

  • 即使我收到消息,它确实插入了行
  • 当我连接到在本地计算机上运行的 Ignite 时,不会发生这种情况,只有当我连接到在云上运行的 Ignite 时才会发生这种情况

有任何关于这里可能发生的事情的线索吗?

ignite
1个回答
0
投票

你没有说哪个版本的Ignite,但我用2.16和2.15尝试过,它在两个版本中都按预期工作。

如果您运行 SQL 命令两次,您会收到与问题中所述相同的错误。

所以我没有在 Ignite 中看到错误,这表明它存在于您的客户端代码或环境中。您可能需要分享有关您的客户或基础设施的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.