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 防悬挂,但是未配置
|
配置
|
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. |
配置了防悬挂
|
配置
|
DTX-018 |
tcc anti-suspend, ITccAntiSuspendDAO didn’t init. |
TCC 防悬挂
|
- |
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 属性只能是
|
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. |
保存
|
检查业务数据库是否正常。 |
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 INGORE’ and ‘INSERT ON DUPLICATE UPDATE’ statement must contain primaryKey colmun(s), sql:[%s] |
|
|
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. |
|
根据异常类型判断出错原因。 |
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. |
|
请先开启数据库事务。 |
DTX-533 |
AddBatch count is not equal to parameters row count. |
|
检查业务代码,确保正确使用了
|
DTX-534 |
All parameters of batch prepareStatement must have addBatch() follow. |
|
检查业务代码,确保正确使用了
|
DTX-535 |
Invoking executeBatch() method need all sql statements are addBatch(), but sql[%s] is not. |
|
检查业务代码,确保正确使用了
|
DTX-536 |
Invoking executeBatch() method need all sql statements are addBatch(sql),but sql[%s] is not. |
|
检查业务代码,确保正确使用了
|
DTX-537 |
Invoking executeQuery/executeUpdate/execute method need all sql statements are non-addBatch sql, but sql[%s] is addBatch. |
|
检查业务代码,确保正确使用了 JDBC。 |
DTX-538 |
PreparedStatement with addBatch sql cann’t use limit-statement, sql:[%s]. |
|
修改业务代码及 SQL 语句。 |
DTX-539 |
parameter count ambiguous, where-statement expect the count more than %d , but parameter count is %d. |
|
检查代码,确保参数个数与 SQL 语句中参数个数相等。 |
DTX-540 |
parameter index ambiguous, where-statement expect the index is %d, but parameter count is %d. |
|
检查代码,确保参数个数与 SQL 语句中参数个数相等。 |
DTX-541 |
parameter data ambiguous, where-statement expect the parameter row count is %d, but actual is %s. |
|
检查代码,确保参数个数与 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]. |
|
修改 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]. |
|
修改 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. |
|
修改 SQL 语句语法。 |
DTX-563 |
transaction [%s] on db [%s] executeQuery(%s) error. |
|
根据抛出的异常类型找出异常原因。 |
DTX-564 |
transaction [%s] on db [%s] executeUpdate([%s]) error. |
|
根据抛出的异常类型找出异常原因。 |
DTX-565 |
transaction [%s] on db [%s] executeUpdate([%s], int) error. |
|
根据抛出的异常类型找出异常原因。 |
DTX-566 |
transaction [%s] on db [%s] executeUpdate([%s], int[]) error. |
|
根据抛出的异常类型找出异常原因。 |
DTX-567 |
transaction [%s] on db [%s] executeUpdate([%s], String[]) error. |
|
根据抛出的异常类型找出异常原因。 |
DTX-568 |
transaction [%s] on db [%s] execute([%s]) error. |
|
根据抛出的异常类型找出异常原因。 |
DTX-569 |
transaction [%s] on db [%s] execute([%s], int) error. |
|
根据抛出的异常类型找出异常原因。 |
DTX-570 |
transaction [%s] on db [%s] execute([%s], int[]) error. |
|
根据抛出的异常类型找出异常原因。 |
DTX-571 |
transaction [%s] on db [%s] execute([%s],String[]) error. |
|
根据抛出的异常类型找出异常原因。 |
DTX-572 |
addBatch(String) is not allowed while getAutoCommit() is true. |
|
在使用
|
DTX-573 |
executeBatch() is not allowed while getAutoCommit() is true. |
|
在使用
|
DTX-574 |
don’t support closeOnCompletion() ; need explicit invoke close() method to close the statement. |
|
手动调用
|
DTX-576 |
WrappedDtxDataSource.getUniqueDbId() is empty. |
|
设置
|
DTX-577 |
WrappedDtxDataSource.targetDataSource is null. |
|
设置
|
DTX-578 |
WrappedDtxDataSource.targetDataSource can not be type of IDtxDataSource. |
|
修改
|
DTX-579 |
DruidDtxDataSource.jdbcUrl is empty. |
|
设置
|
DTX-580 |
DruidDtxDataSource.userName is empty. |
|
设置
|
DTX-581 |
DruidDtxDataSource.password is empty. |
|
设置
|