SDK 集成相关

错误码

错误消息

错误说明

解决方案

DTX-000

dtx component scanner init error.

SDK 启动失败,分布式事务不可用。

-

DTX-001

Bean[%s] can not have @DtxTransaction and @TccBusinessAction both.

同一个 bean 不能既有 @DtxTransaction 又有 @TccBusinessAction 注解。

修改代码,去掉 bean 的 @DtxTransaction 注解或者 @TccBusinessAction 注解 ,只保留其中一个。

DTX-002

the length of bizType[%s] can not be more than 30.

@DtxTransaction 注解上的 BizType 长度不能超过 30 个字符。

将 BizType 长度控制在 30 字符以内。

DTX-003

init dtx configuration error.

初始化分布式事务配置项出现异常。

-

DTX-003

Class [%s] can not have @TccBusinessAction and @TwoPhaseBusinessAction both.

同一个 bean 不能既有 @TccBusinessAction 又有 @TwoPhaseBusinessAction 注解。

修改代码,去掉 bean 的 @TccBusinessAction 注解或者 @TwoPhaseBusinessAction 注解,只保留其中一个。

DTX-005

Unknown remoting service bean type, dtx will ignore this bean

未知的远程服务类型,将忽略此 bean。

-

DTX-006

tcc 2.0 prepare error, txId:[%s].

TCC 2.0 一阶段方法执行失败。

排查业务一阶段方法执行失败原因。

DTX-007

tcc 2.0 prepare control, idempotency failed, txId:[%s].

TCC 2.0 一阶段方法幂等控制执行失败。

-

DTX-008

tcc 2.0 prepare method @ShardingKey param type must be String, className:[%s].

@ShardingKey 标记参数必须是 String 类型。

修改 @ShardingKey 标记参数的类型为 String。

DTX-009

tcc 2.0 the java.sql.DataSource bean [%s] named by @TccBusinessAction.dataSourceBeanId() on class [%s] is not exist in spring applicationContext.

@TccBusinessAction的dataSourceBeanId 属性指定的 DataSource bean 不存在。

检查 @TccBusinessAction的dataSourceBeanId 属性指定的 DataSource bean 是否存在。

DTX-010

tcc 2.0 the interface [%s] has no @TccBusinessAction method.

TCC 2.0 的参与者接口无 @TccBusinessAction 注解。

检查确保 TCC 2.0 的参与者接口上有 @TccBusinessAction 注解。

DTX-011

tcc 2.0 action record is empty,txId:[%s],actionId:[%s].

TCC 2.0 的参与者记录为空,可能是参与者的一阶段方法未执行,或者一阶段方法未执行成功,此时执行二阶段提交出现此异常。

检查一阶段方法是否成功执行。

DTX-012

tcc 2.0 action commit failed,txId:[%s],actionId:[%s].

TCC 2.0 的参与者执行二阶段提交方法时出现异常。

排除二阶段提交方法执行异常的原因

DTX-013

tcc 2.0 commit/rolback failed, txId or actionId is empty.

TCC 2.0 的参与者执行二阶段方法出现异常,原因是事务 ID 为空。

-

DTX-014

tcc 2.0 action rollback failed,txId:[%s],actionId:[%s].

TCC 2.0 的参与者执行二阶段回滚方法出现异常。

排除二阶段回滚方法执行异常的原因。

DTX-015

tcc anti-suspend, the ‘TccAntiSuspendDAO’ must not be null.

开启了 TCC 防悬挂,但是未配置 TccAntiSuspendDAO

配置 TccAntiSuspendDAO, 详见 TCC 防悬挂与幂等接入

DTX-016

tcc anti-suspend(prepare method) intercept, txId:[%s].

TCC 一阶段方法重复执行,防悬挂拦截器被触发。

检查 TCC 一阶段方法被重复执行的原因。

DTX-017

tcc anti-suspend(prepare method) , the DataSource can’t be null.

配置了防悬挂 TccAntiSuspendDAO,必须设置其 dataSources 属性。

配置 TccAntiSuspendDAO 详见 TCC 防悬挂与幂等接入

DTX-018

tcc anti-suspend, ITccAntiSuspendDAO didn’t init.

TCC 防悬挂 TccAntiSuspendDAO 初始化未完成。

-

DTX-019

tcc anti-suspend failed, txId:[%s].

TCC 防悬挂控制出现未知异常。

-

DTX-020

@TwoPhaseBusinessAction method , has no serviceId.

TCC 参与者接口的 @TwoPhaseBusinessAction 主键的 name 属性为空。

TCC 参与者接口的 @TwoPhaseBusinessAction 主键的 name 属性不得为空,且需要全局唯一。

DTX-021

unknown actionType:[%s].

TCC 参与者接口的 @TwoPhaseBusinessAction 主键的 actionType 属性配置了未知值。

TCC 参与者接口的 @TwoPhaseBusinessAction 主键的 actionType 属性只能是 localremote

DTX-022

report tcc branch failed, txId:[%s],actionId:[%s], serviceId:[%s].

创建 TCC 参与者的分支事务记录出现异常

检查分布式事务 SDK 与事务云服务的网络连接是否正常、检查事务云服务返回创建分支事务记录事务的原因。

DTX-023

report tcc branch error, txId:[%s],actionId:[%s], serviceId:[%s].

创建 TCC 参与者的分支事务记录出现未知异常。

检查分布式事务 SDK 与事务云服务的网络连接是否正常。

DTX-024

Dtx transaction timeout error, total time cost :%d (s), more than %d (s).

分布式事务执行超时,导致事务超时回滚。

检查事务执行超时原因,如需自定义事务超时时间,可以设置 @DtxTransaction 注解的 timeout 属性值(单位:秒)。

DTX-025

dtx transaction rollbacked error,txId[%s].

分布式事务回滚出现异常

检查分布式事务 SDK 和事务云服务之间的网络连接是否正常。

DTX-026

dtx transaction start failed, invoke dtx-server failed, request:[%s],response:[%s]

分布式事务开启创建主事务记录,事务云服务返回创建失败。

检查事务云服务创建主事务记录失败原因。

DTX-027

dtx transaction commit failed, request:[%s],response:[%s].

分布式事务提交,事务云服务返回提交失败。

检查事务云服务提交分布式事务失败原因。

DTX-028

dtx transaction commit error, request:[%s].

分布式事务提交出现未知异常。

检查分布式事务 SDK 和事务云服务之间的网络连接是否正常。

DTX-029

dtx transaction rollback failed, request:[%s],response:[%s]

分布式事务回滚,事务云服务返回回滚失败。

检查事务云服务回滚分布式事务失败原因。

DTX-030

dtx transaction rollback error, request:[%s].

分布式事务回滚出现未知异常。

检查分布式事务 SDK 和事务云服务之间的网络连接是否正常。

DTX-031

Dtx transaction timeout error, total time cost : %d (s), more than %d (s).

分布式事务执行超时,事务回滚。

检查事务执行超时原因,如需自定义事务超时时间,可以设置 @DtxTransaction 注解的 timeout 属性值(单位:秒)。

框架相关

错误码

错误消息

错误说明

解决方案

DTX-200

There must be only one framework, but found two, [%s] and [%s].

运行框架只能有一个,但是系统识别到多个运行框架。

-

DTX-201

There are more than one remoting protocols on one bean, beanName: [%s] with type [%s].

当前运行环境下,未找到任何远程通信协议。

-

DTX-202

There must be only one configuration, but found two, [%s] and [%s].

配置项文件只能有一个,但是系统识别到至少 2 个配置项文件。

确保配置项文件只有一个。

DTX-203

There must be one IConfiguration implement.

无任何配置项文件。

确保配置项文件存在。

DTX-204

No framework found.

未识别到任何运行框架。

确保运行框架是分布式事务能支持的。

SDK 与事务云服务通信相关

错误码

错误消息

错误说明

解决方案

DTX-301

There must be one address registry, but found none.

未找到事务云服务的地址。

检查事务云服务是否健康运行。

DTX-302

init dtx-servers’ tcp long-conections failed.

分布式事务 SDK 与事务云服务建立长连接失败。

检查事务云服务是否健康运行。

DTX-303

unavailable dtx-server connections,serverIp:[%s]

分布式事务 SDK 无法建立到 serverIp 的 TCP 长连接。

检查事务云服务是否健康运行。

DTX-304

rpc (to dtx-server) invoke error.

向事务云服务发送消息出现异常。

检查事务云服务是否健康运行。

SQL 解析相关

错误码

错误消息

错误说明

解决方案

DTX-400

unknown dbType:[%s]

不支持的数据库类型

目前支持 Oceanbase、MySQL、Oracle,其他数据库暂不支持。

DTX-402

parser sql error,sql:[%s]

解析 SQL 语句出现异常

检查分布式事务是否支持 SQL 语法。

DTX-403

value type of param [%s]: [%s] is not support.

不支持的 SQL 语句表达式

检查分布式事务是否支持 SQL 语法。

DTX-403

unknown dbType for in select subquery.

嵌套子查询不支持

嵌套子查询不支持,请修改 SQL 语法。

DTX-404

insert’s duplicateKeyUpdateClauses is not expression.

insert on duplicate key update 语句语法有错误

检查 SQL 语句语法是符合标准 SQL 语法。

DTX-405

the insert sql’s columns or valurClauses is null.

insert 语句语法有错误

检查 SQL 语句语法是符合标准 SQL 语法。

DTX-406

aggregate method [%s] is not support, only support aggregate methods: SUM, COUNT, AVG, MIN, MAX.

集合函数目前只支持 SUM、COUNT、AVG、MIN、MAX,其它集合函数不支持

集合函数目前只支持 SUM、COUNT、AVG、MIN、MAX,修改 SQL 语句。

DTX-450

There must be primaryKey in table[%s] of db[%s].

业务表必须有主键

给所有业务表添加主键。

数据源相关(FMT 模式下)

错误码

错误消息

错误说明

解决方案

DTX-500

transaction [%s]:[%s] on db [%s] flush branchInfo to db failed.

保存 undo logdtx\_branch\_info 表失败

检查业务数据库是否正常。

DTX-501

transaction [%s]:[%s] on db [%s] report branchInfo to dtx-server failed.

向事务云服务发送创建分支事务记录消息失败

检查分布式事务 SDK 与事务云服务网络连接是否正常、检查事务云服务是否正常。

DTX-502

transaction [%s]:[%s] on db [%s] commit error

业务本地事务提交失败

检查业务数据库是否正常。

DTX-503

transaction [%s]:[%s] on db [%s] rollback error

业务本地事务回滚失败

检查业务数据库是否正常。

DTX-504

sql parser result is empty, sql:[%s]

SQL 语句解析结果为空

检查 SQL 语法是否为分布式事务支持。

DTX-505

‘INSERT IGNORE’ and ‘INSERT ON DUPLICATE UPDATE’ statement must contain primaryKey colmun(s), sql:[%s]

INSERT IGNOREINSERT ON DUPLICATE UPDATE 中不得使用自增主键句式

INSERT IGNOREINSERT ON DUPLICATE UPDATE 不支持使用自增主键,请在 SQL 语句的列与值中添加主键字段。

DTX-506

‘UPDATE’ and ‘DELETE’ statement must have where-statement, sql:[%s]

update 和 delete 语句编写要 where 条件

修改 SQL 语句,添加 where 条件。

DTX-507

‘UPDATE’ statement can not update primaryKey colmun(s), sql:[%s]

update 语句不得更新主键值

修改 SQL 语句。

DTX-508

Unknown sqlType, sql:[%s]

不支持的数据库类型

目前支持 Oceanbase、MySQL、Oracle,其他数据库暂不支持。

DTX-509

In READ_COMMITTED mode, complex query is not supported, you can use READ_UNCOMMITTED mode, sql:[%s]

读已提交模式不支持复杂查询语句

修改 SQL 语句为简单查询语句,或者使用读未提交模式。

DTX-510

Insert-select statement is not supported, sql:[%s]

Insert-select 语法不支持

修改 SQL 语句。

DTX-511

branchLogItems is empty, nothing to undo, dbId:[%s]

业务库无 undo log,undo 操作返回

-

DTX-512

check dirty failed, branchLogItem:[%s].

脏写校验失败,数据回滚异常

人工介入订正数据。

DTX-513

insert branchInfo error, branchInfo:[%s]

保存 undo log 至业务数据库出现异常

检查业务数据库是否正常。

DTX-514

lock table row failed, data may be locked by another transaction. db:[%s],tableName:[%s] ,primaryKey:[%s]

添加行锁失败,数据行锁正在被其他事务占用

检查数据行锁占用事务未结束原因。

DTX-515

insert rowlock failed, txId = %s, had tried count: %d

保存行锁数据至业务数据库失败

检查业务数据库是否正常、检查数据行锁是否被其他事务占用。

DTX-516

transaction:[%s] lock table row failed;row:[%s:%s] was locked by transaction:[%s].

行锁添加失败,行锁被其他事务占用

检查数据行锁占用事务未结束原因。

DTX-517

insert statement primary-key’s value must be simple value, sql:%s.

insert 语句中的主键字段必须是简单数据类型:字符串或数字

修改主键数据类型。

DTX-518

Oracle insert statement primary-key’s value can not be Sequence.nextVal/Sequence.currVal, sql:%s.

Oracle 数据库 insert 语句,主键不得使用 sequence

修改 insert 语句语法。

DTX-519

Insert statement primary-key’s value can not be Expression, sql:%s.

insert 语句主键值不得是表达式

修改 insert 语句语法。

DTX-520

Unsupport dbType:%s.

不支持的数据库类型

目前支持 Oceanbase、MySQL、Oracle,其他数据库暂不支持。

DTX-521

unsupport sub query in where condition.

不支持 where 条件中的子查询

修改 SQL 语句语法。

DTX-522

join select sql can not get one tableName.

join 语句获取多个表名,会产生歧义,不支持 join 语句

修改 SQL 语句语法或者改成读未提交模式。

DTX-523

select from more than on tableName or sub select statement, can not get a tableName.

join 语句获取多个表名,会产生歧义,不支持 join 语句

修改 SQL 语句语法,或者改成读未提交模式。

DTX-524

select from nest sub select statement, can not get a tableName.

不支持嵌套查询

修改 SQL 语句语法,或者改成读未提交模式。

DTX-525

select sql has no tableName.

查询语句无表名称

修改 SQL 语句语法。

DTX-526

unknown parameter, %s:%s.

不支持的数据类型

修改 SQL 语句语法。

DTX-527

executeBatch error, statement:%s.

executeBatch 执行出现异常

根据异常类型判断出错原因。

DTX-528

execute Statement, but sql is empty.

SQL 语句为空

DTX-529

execute statement error, statement:%s.

执行 SQL 语句出现异常

根据异常类型判断出错原因。

DTX-530

Statements is empty, no sql need execute.

SQL 语句为空

-

DTX-531

there is not sql to executed.

SQL 语句为空

-

DTX-532

while getAutoCommit() is true can not invoke executeBatch.

executeBatch 方法必须在数据库事务内执行

请先开启数据库事务。

DTX-533

AddBatch count is not equal to parameters row count.

addBatch 参数个数不匹配

检查业务代码,确保正确使用了 addBatch

DTX-534

All parameters of batch prepareStatement must have addBatch() follow.

executeBatch 的参数设置之后必须调用 addBatch 方法

检查业务代码,确保正确使用了 addBatch

DTX-535

Invoking executeBatch() method need all sql statements are addBatch(), but sql[%s] is not.

executeBatch 用法不正确

检查业务代码,确保正确使用了 addBatch

DTX-536

Invoking executeBatch() method need all sql statements are addBatch(sql),but sql[%s] is not.

executeBatch 用法不正确

检查业务代码,确保正确使用了 addBatch

DTX-537

Invoking executeQuery/executeUpdate/execute method need all sql statements are non-addBatch sql, but sql[%s] is addBatch.

addBatch 的 SQL 调用了 executeQuery/executeUpdate/execute 方法执行

检查业务代码,确保正确使用了 JDBC。

DTX-538

PreparedStatement with addBatch sql cann’t use limit-statement, sql:[%s].

PreparedStatementaddBatch 用法,SQL 语句中不支持带 limit 分页句式

修改业务代码及 SQL 语句。

DTX-539

parameter count ambiguous, where-statement expect the count more than %d , but parameter count is %d.

PreparedStatement 的 SQL 语句的参数个数与实际参数个数不匹配

检查代码,确保参数个数与 SQL 语句中参数个数相等。

DTX-540

parameter index ambiguous, where-statement expect the index is %d, but parameter count is %d.

PreparedStatement 的 SQL 语句的参数个数与实际参数个数不匹配

检查代码,确保参数个数与 SQL 语句中参数个数相等。

DTX-541

parameter data ambiguous, where-statement expect the parameter row count is %d, but actual is %s.

PreparedStatement 的批量 SQL 语句的参数行数与实际参数行数不匹配

检查代码,确保参数个数与 SQL 语句中参数个数相等。

DTX-542

query log error, querySql:[%s],prameters:[%s],isPrepare:%s.”

查询 undo log 出现异常

检验业务数据库是否可用。

DTX-543

check dirty data error,tableName:[%s],oldRows:[%s],newRows:[%s].

脏写校验失败,业务数据出现脏写

人工介入订正数据。

DTX-544

auto-generate primary-key must be only one column,sql: [%s].

自增主键不能是复合主键

修改主键为单列主键。

DTX-545

addBatch() must include primary-key(s) in sql, auto-generate primary-key don’t support,sql: [%s].

addBatch 的 SQL 语句中必须包含主键,不支持自增主键

修改 SQL 语句。

DTX-546

insert without primary-key(s), do not support batch insert ,sql: %s.

批量插入时,SQL 语句中必须有主键

修改 SQL 语句,添加主键列至 SQL 语句中 。

DTX-547

preparedstatement addBatch, insert sql’s values must be single,the sql:[%s].

preparedstatementaddBatch 用法时,insert 语句不支持批量

修改 SQL 语句。

DTX-548

parameter index ambiguous, where-statement expect the index is %d, but parameter count is %d.

SQL 语句需要的参数个数与实际的参数个数不匹配

检查业务代码和 SQL 语句的参数是否匹配。

DTX-550

parameter data ambiguous, where-statement expect the parameter row count is %d, but actual is %s.

SQL 语句需要的参数个数与实际的参数个数不匹配

检查业务代码和 SQL 语句的参数是否匹配。

DTX-551

parameter index ambiguous, where-statement expect the index is %d, but parameter count is %d.

SQL 语句需要的参数个数与实际的参数个数不匹配

检查业务代码和 SQL 语句的参数是否匹配。

DTX-552

parameter data ambiguous, where-statement expect the parameter row count is %d, but actual is %s.

SQL 语句需要的参数个数与实际的参数行数不匹配

检查业务代码和 SQL 语句的参数是否匹配 。

DTX-553

the type of primary key must be ‘String’ or ‘Number’.

主键字段的类型必须是字符串或者数字

修改主键、或者修改主键数据类型。

DTX-554

can not get the primarykey of insert statement:[%s],parameters:[%s].

自增主键的 insert 语句,无法获取 insert 数据之后的主键值

修改 insert 语句添加主键。

DTX-556

the columns count of sql’s values is not equal to the columns count of the table, table’s column count:[%d],columns values:[%d]

SQL 语句中的字段列与业务表的字段列个数不匹配

检查 SQL 语句是否正确;如果数据库表结构变更过,请重启机器刷新分布式事务缓存 。

DTX-557

check undo datas result is true, undo do nothing, branchLogItem:[%s].

undo log 数据为空,undo 操作返回

-

DTX-558

unknown sqlType, sqlType: %s, branchLogItem:[%s].

不支持的 SQL 语句类型

参考分布式事务开发指南,修改 SQL 语句为分布式事务支持的 SQL 类型。

DTX-559

check dirty datas failed, the data is dirty, tableName:[%s],postRows:[%s],dbRows:[%s],branchLogItem:[%s].

数据脏写校验失败,业务数据出现脏写

人工介入订正数据。

DTX-560

insert branch info into oracle db failed, txId:%s, actionId: %s.

向 Oracle 数据库保存 undo log 出现异常

检查业务数据库是否正常运行。

DTX-561

connection must setAutoCommit(false), conn: %s, rowLocks: %s.

保存行锁记录时,未开启数据库事务。

-

DTX-562

preparedStatement only support single sql,but sql[%s] has more one sql.

preparedStatement 中不支持多个 SQL 语句

修改 SQL 语句语法。

DTX-563

transaction [%s] on db [%s] executeQuery(%s) error.

executeQuery 方法执行出现未知异常

根据抛出的异常类型找出异常原因。

DTX-564

transaction [%s] on db [%s] executeUpdate([%s]) error.

executeUpdate 方法执行出现未知异常

根据抛出的异常类型找出异常原因。

DTX-565

transaction [%s] on db [%s] executeUpdate([%s], int) error.

executeUpdate 方法执行出现未知异常

根据抛出的异常类型找出异常原因。

DTX-566

transaction [%s] on db [%s] executeUpdate([%s], int[]) error.

executeUpdate 方法执行出现未知异常

根据抛出的异常类型找出异常原因。

DTX-567

transaction [%s] on db [%s] executeUpdate([%s], String[]) error.

executeUpdate 方法执行出现未知异常

根据抛出的异常类型找出异常原因。

DTX-568

transaction [%s] on db [%s] execute([%s]) error.

execute 方法执行出现未知异常

根据抛出的异常类型找出异常原因。

DTX-569

transaction [%s] on db [%s] execute([%s], int) error.

execute 方法执行出现未知异常

根据抛出的异常类型找出异常原因。

DTX-570

transaction [%s] on db [%s] execute([%s], int[]) error.

execute 方法执行出现未知异常

根据抛出的异常类型找出异常原因。

DTX-571

transaction [%s] on db [%s] execute([%s],String[]) error.

execute 方法执行出现未知异常

根据抛出的异常类型找出异常原因。

DTX-572

addBatch(String) is not allowed while getAutoCommit() is true.

addBatch(String) 方法必须在开启数据库事务之后使用

在使用 addBatch(String) 方法前先开启数据库事务。

DTX-573

executeBatch() is not allowed while getAutoCommit() is true.

executeBatch 方法必须在开启数据库事务之后使用

在使用 executeBatch 方法前先开启数据库事务。

DTX-574

don’t support closeOnCompletion() ; need explicit invoke close() method to close the statement.

closeOnCompletion 方法不支持

手动调用 close 方法关闭 Statement。

DTX-576

WrappedDtxDataSource.getUniqueDbId() is empty.

WrappedDtxDataSource 的 uniqueDbId 属性不得为空

设置 WrappedDtxDataSource 的 uniqueDbId 属性,需要保证全局唯一。

DTX-577

WrappedDtxDataSource.targetDataSource is null.

WrappedDtxDataSource 的 targetDataSource 属性不得为空

设置 WrappedDtxDataSource 的 targetDataSource 属性。

DTX-578

WrappedDtxDataSource.targetDataSource can not be type of IDtxDataSource.

WrappedDtxDataSource 的 targetDataSource 属性所指的 DataSource 对象不能是 IDtxDataSource 类型

修改 WrappedDtxDataSource 的 targetDataSource 属性为非 IDtxDataSource 类型。

DTX-579

DruidDtxDataSource.jdbcUrl is empty.

DruidDtxDataSource 的 dbType 属性不得为空

设置 DruidDtxDataSource 的 dbType 属性。

DTX-580

DruidDtxDataSource.userName is empty.

DruidDtxDataSource的 userName 属性不得为空

设置 DruidDtxDataSource 的 userName 属性。

DTX-581

DruidDtxDataSource.password is empty.

DruidDtxDataSource 的 password 属性不得为空

设置 DruidDtxDataSource 的 password 属性。