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 IGNORE’ 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. |
| 设置 |