Java 中,原生 JDBC 执行 TDSQL 批量更新的时候,proxy 报错,报错内容理解为:in a non XA transaction,this sql use a different set。
官网 TDSQL 文档中,我看到 update 语句允许跨 set 更新的,update 语句 where 条件加上了 shardkey 的条件了。
求问,有人知道该如何操作嘛?
我正在使用Postgres、Hibernate、Atomikos、JPA和Thymeleaf配置spring引导web应用程序。我使用AbstractRoutingDataSource路由到新数据源,如下所示:
@Override
protected Object determineCurrentLookupKey() {
String currentTenantId = TenantContextHolder.getCurrentTenantId();
// Get endpoint, database name from d
为了使分布式事务正常工作,我已经尝试了将近一个星期。我有一些关于MSSQL的过程,它们试图从MySQL中选择数据。我的需要是一举做到这一点(!)事务。当时,我已经使用来自MySQL的单层OpenLink驱动程序在MSSQL上建立了ODBC连接,这说明XA事务成功地工作(配置ODBC后集成了一个测试按钮)。然后,我通过MSDASQL将MSSQL中的链接服务器设置为此ODBC连接,但在执行以下操作时
begin distributed transaction
select * from optin..lu_source_proc
select * from openquery(op
我的Websphere应用程序有3个数据源。其中两个是XA,另一个是非XA。
我用@transactional注解了一个Java方法,从而使该方法成为事务性的。
在该方法中,执行了3个任务。第一个任务是使用一个XA数据源进行一些更新,第二个任务使用非XA数据源选择一些记录,最后一个任务使用另一个XA数据源再次进行一些更新。
但是,会抛出异常,并显示以下错误:An illegal attempt to commit a one phase capable resource with existing two phase capable resources
我想知道为什么会出现上面的错误,即使我的
UserTransaction ut=lookup....ut.beginTransaction();saveToFooDB();statelessEjb.transactionSupportedMethod();//将某些内容保存到Foo DB saveToFooDB();ut.commit();
如果我是这样做的,那么我的理解是它不是XA事务,因为它不会跨越多个资源(比如DB和JMS)。我的理解正确吗?
我试图为运行在MS sql server 2008上的Windows server 2008 R2启用XA事务。
为此,我必须将SQLJDBC_XA.dll文件从JDBC安装目录复制到Binn目录。
这个数据库服务器在磁盘中的任何地方都没有任何这样的文件,而且我也无法访问安装CD。有什么办法可以得到这个特定的文件吗?
我想使用JBoss/XA Transacion和Mule 3.7中的数据库连接器组件。
但是一个例外是抛出:Transactional action is ALWAYS_JOIN but there is no active transaction (java.lang.IllegalStateException)。
我的事务性场景是:
池+数据库组件- select表A
VM组件只是为了启动一个事务- ALWAYS_BEGIN
数据库组件- MySQL - insert表B
数据库组件- Oracle - insert表C
我们必须确保插入一起运行和提交,或者一起回滚
我有一个Server 2012实例,其中有一个链接服务器,它使用驱动程序指向Iseries系统上的db2数据库。
我正在尝试启用分布式事务。我相信这个提供者确实支持他们按照IBM文档 (除非我误解了那个链接)。
我正在运行以下查询:
BEGIN TRANSACTION
UPDATE LINKEDSERVER.LINKEDDATABASE.SCHEMANAME.TABLENAME SET COLUMN = VALUE
SELECT CAST('qwerty' as integer) -- we want an error here so the transact
我有一个应用程序,它将文件存储在AWS S3中,文件元数据存储在MySQL中。每个操作(上传、更新、删除)通常都需要更新S3和DB。
如何使这样的动作“原子化”?我是否可以将其包装到DB事务,直到S3操作完成?示例:
DB transaction start
Make an S3 action (can take a few seconds)
Make a DB action(s)
DB transaction commit
目前,我将S3操作从DB事务中调用,因为我倾向于使DB事务尽可能短,这样它们就不会锁定DB,这当然会在DB操作不成功的情况下为潜在的数据不一致打开。
你有什么推荐的?我可