Skip to content

Commit 8a9c8db

Browse files
committed
Java:MultiDataSource 中 SQLAuto: 解决非 UPDATE/DELETE SQL 报错 can't commit after auto commit
1 parent 04365ab commit 8a9c8db

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

‎APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/java/apijson/boot/DemoController.java‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2570,6 +2570,7 @@ public String execute(@RequestBody String request, HttpSession session) {
25702570
long rsDuration = 0;
25712571
long executeStartTime = System.currentTimeMillis();
25722572

2573+
boolean isAutoCommit = true;
25732574
try {
25742575
if (DemoSQLConfig.DATABASE_INFLUXDB.equals(database) || DemoSQLConfig.DATABASE_CASSANDRA.equals(database)) {
25752576
JSONObject result = executor.execute(config, false);
@@ -2593,6 +2594,7 @@ public String execute(@RequestBody String request, HttpSession session) {
25932594
if (EXECUTE_STRICTLY) {
25942595
if (isWrite) {
25952596
try {
2597+
isAutoCommit = false;
25962598
connection.setAutoCommit(false);
25972599
// connection.beginRequest();
25982600
int rows = ((PreparedStatement) statement).executeUpdate();
@@ -2617,6 +2619,7 @@ public String execute(@RequestBody String request, HttpSession session) {
26172619
if (EXECUTE_STRICTLY) {
26182620
if (isWrite) {
26192621
try {
2622+
isAutoCommit = false;
26202623
connection.setAutoCommit(false);
26212624
// connection.beginRequest();
26222625
int rows = statement.executeUpdate(sql);
@@ -2673,7 +2676,9 @@ public String execute(@RequestBody String request, HttpSession session) {
26732676
}
26742677

26752678
try {
2676-
connection.commit();
2679+
if (! (isAutoCommit || connection.getAutoCommit())) {
2680+
connection.commit();
2681+
}
26772682
} finally {
26782683
try {
26792684
statement.close();

0 commit comments

Comments
 (0)