AE86 před 3 roky
rodič
revize
7700aaeadc

+ 18 - 24
dbsyncer-connector/src/main/java/org/dbsyncer/connector/database/AbstractDatabaseConnector.java

@@ -135,20 +135,23 @@ public abstract class AbstractDatabaseConnector extends AbstractConnector
         try {
             // 2、设置参数
             execute = connectorMapper.execute(databaseTemplate ->
-                databaseTemplate.batchUpdate(executeSql, new BatchPreparedStatementSetter() {
-                    @Override
-                    public void setValues(PreparedStatement preparedStatement, int i) {
-                        batchRowsSetter(databaseTemplate.getConnection(), preparedStatement, fields, data.get(i));
-                    }
-
-                    @Override
-                    public int getBatchSize() {
-                        return data.size();
-                    }
-                })
+                    databaseTemplate.batchUpdate(executeSql, new BatchPreparedStatementSetter() {
+                        @Override
+                        public void setValues(PreparedStatement preparedStatement, int i) {
+                            batchRowsSetter(databaseTemplate.getConnection(), preparedStatement, fields, data.get(i));
+                        }
+
+                        @Override
+                        public int getBatchSize() {
+                            return data.size();
+                        }
+                    })
             );
         } catch (Exception e) {
-            data.forEach(row -> forceUpdate(result, connectorMapper, config, pkField, row));
+            if (!config.isForceUpdate()) {
+                result.addFailData(data);
+                result.getError().append(e.getMessage());
+            }
         }
 
         if (null != execute) {
@@ -448,20 +451,11 @@ public abstract class AbstractDatabaseConnector extends AbstractConnector
 
     private void forceUpdate(Result result, DatabaseConnectorMapper connectorMapper, WriterBatchConfig config, Field pkField,
                              Map row) {
-        String event = config.getEvent();
-        if (!config.isForceUpdate()) {
-            result.getFailData().add(row);
-            result.getError().append("SQL:").append(config.getCommand().get(event)).append(System.lineSeparator())
-                    .append("DATA:").append(row).append(System.lineSeparator())
-                    .append("ERROR:").append("Row data does not exist.").append(System.lineSeparator());
-            return;
-        }
-
         // 不存在转insert
-        if (isUpdate(event)) {
+        if (isUpdate(config.getEvent())) {
             String queryCount = config.getCommand().get(ConnectorConstant.OPERTION_QUERY_COUNT_EXIST);
             if (!existRow(connectorMapper, queryCount, row.get(pkField.getName()))) {
-                logger.warn("{}表执行{}失败, 尝试执行{}, {}", config.getTableName(), event, ConnectorConstant.OPERTION_INSERT, row);
+                logger.warn("{}表执行{}失败, 尝试执行{}, {}", config.getTableName(), config.getEvent(), ConnectorConstant.OPERTION_INSERT, row);
                 writer(result, connectorMapper, config, pkField, row, ConnectorConstant.OPERTION_INSERT);
             }
             return;
@@ -469,7 +463,7 @@ public abstract class AbstractDatabaseConnector extends AbstractConnector
 
         // 存在转update
         if (isInsert(config.getEvent())) {
-            logger.warn("{}表执行{}失败, 尝试执行{}, {}", config.getTableName(), event, ConnectorConstant.OPERTION_UPDATE, row);
+            logger.warn("{}表执行{}失败, 尝试执行{}, {}", config.getTableName(), config.getEvent(), ConnectorConstant.OPERTION_UPDATE, row);
             writer(result, connectorMapper, config, pkField, row, ConnectorConstant.OPERTION_UPDATE);
         }
     }

+ 1 - 1
dbsyncer-parser/src/main/java/org/dbsyncer/parser/flush/impl/EnableFlushStrategy.java

@@ -12,7 +12,7 @@ import org.springframework.stereotype.Component;
  * @date 2021/11/18 22:21
  */
 @Component
-@ConditionalOnProperty(value = "dbsyncer.parser.flush.enabled", havingValue = "true")
+@ConditionalOnProperty(value = "dbsyncer.parser.flush.full.enabled", havingValue = "true")
 public final class EnableFlushStrategy extends AbstractFlushStrategy {
 
 }

+ 1 - 1
dbsyncer-web/src/main/resources/application.properties

@@ -17,7 +17,7 @@ dbsyncer.storage.id=1
 #dbsyncer.storage.support.mysql.config.password=123
 
 #parser
-#dbsyncer.parser.flush.enabled=true
+#dbsyncer.parser.flush.full.enabled=true
 
 #monitor
 management.endpoints.web.base-path=/app