具体报错代码
com.mysql.jdbc.jdbc2.optional.MysqlXAException: Undetermined error occurred in the underlying Connection - check your data for consistency
at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.mapXAExceptionFromSQLException(MysqlXAConnection.java:584)
at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.recover(MysqlXAConnection.java:314)
at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.recover(MysqlXAConnection.java:242)
at com.atomikos.datasource.xa.RecoveryScan.recoverXids(RecoveryScan.java:32)
at com.atomikos.recovery.xa.XaResourceRecoveryManager.retrievePreparedXidsFromXaResource(XaResourceRecoveryManager.java:158)
at com.atomikos.recovery.xa.XaResourceRecoveryManager.recover(XaResourceRecoveryManager.java:67)
at com.atomikos.datasource.xa.XATransactionalResource.recover(XATransactionalResource.java:449)
at com.atomikos.icatch.imp.TransactionServiceImp.performRecovery(TransactionServiceImp.java:490)
at com.atomikos.icatch.imp.TransactionServiceImp.access$000(TransactionServiceImp.java:56)
at com.atomikos.icatch.imp.TransactionServiceImp
1.
a
l
a
r
m
(
T
r
a
n
s
a
c
t
i
o
n
S
e
r
v
i
c
e
I
m
p
.
j
a
v
a
:
471
)
a
t
c
o
m
.
a
t
o
m
i
k
o
s
.
t
i
m
i
n
g
.
P
o
o
l
e
d
A
l
a
r
m
T
i
m
e
r
.
n
o
t
i
f
y
L
i
s
t
e
n
e
r
s
(
P
o
o
l
e
d
A
l
a
r
m
T
i
m
e
r
.
j
a
v
a
:
95
)
a
t
c
o
m
.
a
t
o
m
i
k
o
s
.
t
i
m
i
n
g
.
P
o
o
l
e
d
A
l
a
r
m
T
i
m
e
r
.
r
u
n
(
P
o
o
l
e
d
A
l
a
r
m
T
i
m
e
r
.
j
a
v
a
:
82
)
a
t
j
a
v
a
.
u
t
i
l
.
c
o
n
c
u
r
r
e
n
t
.
T
h
r
e
a
d
P
o
o
l
E
x
e
c
u
t
o
r
.
r
u
n
W
o
r
k
e
r
(
T
h
r
e
a
d
P
o
o
l
E
x
e
c
u
t
o
r
.
j
a
v
a
:
1149
)
a
t
j
a
v
a
.
u
t
i
l
.
c
o
n
c
u
r
r
e
n
t
.
T
h
r
e
a
d
P
o
o
l
E
x
e
c
u
t
o
r
1.alarm(TransactionServiceImp.java:471) at com.atomikos.timing.PooledAlarmTimer.notifyListeners(PooledAlarmTimer.java:95) at com.atomikos.timing.PooledAlarmTimer.run(PooledAlarmTimer.java:82) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor
1.alarm(TransactionServiceImp.java:471)atcom.atomikos.timing.PooledAlarmTimer.notifyListeners(PooledAlarmTimer.java:95)atcom.atomikos.timing.PooledAlarmTimer.run(PooledAlarmTimer.java:82)atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)atjava.util.concurrent.ThreadPoolExecutorWorker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: [10fde0cb77e47000][10.0.116.147:3306][jb_trade_prod]ERR-CODE: [TDDL-4500][ERR_PARSER] You have an error in your SQL syntax; Error occurs around this fragment: {XA RECOVER}. Error cause: sql is not a supported statement
at sun.reflect.GeneratedConstructorAccessor82.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
at com.mysql.jdbc.Util.getInstance(Util.java:387)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:939)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2478)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2625)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2547)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2505)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1370)
at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.recover(MysqlXAConnection.java:293)
… 13 common frames omitted
原因
数据库运行 XA RECOVER 报错了,使用的是一个只读账号,可能没有XA权限
但不影响连接查询
由于数据库连接用户没有XA_RECOVER_ADMIN权限导致。
使用授权命令
GRANT XA_RECOVER_ADMIN ON . TO ‘root’@’%’;