使用 Teiid

问题描述

我正在尝试使用带有 Teiid 的 Odata 批处理请求变更集将数据插入到 SQL 服务器数据库中。令人惊讶的是,插入似乎不是原子的。我正在使用 Teeid 13.0.2 和 mssql-jdbc-7.4.1.jre8.jar。

为了演示问题。我创建了一个带有一列“Id”的 TestTable,它是主键。该表已包含数字 1。通过使用以下批处理请求,我尝试在原子操作中插入 41 和 1。批处理失败,状态代码为 400,由于主键约束,这是我所期望的。但是 41 仍然插入到 SQL 服务器数据库中,据我所知,这不应该发生。

--batch_a
Content-Type: multipart/mixed; boundary=changeset_a

--changeset_a
Content-Type: application/http
Content-ID: 1
Content-Transfer-Encoding: binary

POST TestTable HTTP/1.1
Content-Type: application/json

{"Id":41}
--changeset_a
Content-Type: application/http
Content-ID: 2
Content-Transfer-Encoding: binary

POST TestTable HTTP/1.1
Content-Type: application/json

{"Id":1}
--changeset_a-- 
--batch_a--  

对我做错了什么有任何想法吗?我创建了一个 teeid 跟踪来查看发生了什么,似乎有 2 个事务而不是 1 个。跟踪可在 https://gist.github.com/mbankdmt/ec1465e22f71c00dab6db13483da66c1 处获得。

解决方法

我使用的是 teiid 17.0.0 和 onlingo 4.8.0。我遇到了和你一样的问题。 经过调试,我发现类TeiidServiceHandler内部存在一些错误。嵌套事务会导致此问题。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...