开发者社区 > 大数据与机器学习 > 大数据开发治理DataWorks > 正文

DataWorks回滚此次写入, 采用每次写入一行方式提交. 什么原因?

DataWorks回滚此次写入, 采用每次写入一行方式提交. 因为:java.sql.BatchUpdateException: Incorrect string value: '\xF0\x9F\x90\xB8' for column 'symbol' at row 35?2023-11-27 20:21:38.690 [140187727-0-1-writer] WARN CommonRdbmsWriter$Task -

展开
收起
真的很搞笑 2023-12-03 16:43:55 595 0
5 条回答
写回答
取消 提交回答
  • 针对已经XA PREPARE的事务数据,实时同步会将其同步到目标端,如果XA ROLLBACK,实时同步不会针对XA PREPARE的数据做回滚写入的操作。若要处理XA ROLLBACK场景,需要手动将XA ROLLBACK的表从实时同步任务中移除,再添加表后重新进行同步。https://help.aliyun.com/zh/dataworks/user-guide/mysql-data-source?spm=a2c4g.11186623.0.i19

    2023-12-05 12:18:56
    赞同 展开评论 打赏
  • 这个错误是由于在插入数据时,某个字段的值包含了非法的字符。在这个例子中,'symbol'字段的值是'\xF0\x9F\x90\xB8',这是一个表情符号。你需要检查你的数据源,确保所有的字符串值都是合法的。

    如果你使用的是JDBC进行批量插入,你可以尝试使用PreparedStatement来避免这个问题。以下是一个示例:

    String sql = "INSERT INTO your_table (column1, column2) VALUES (?, ?)";
    try (Connection conn = DriverManager.getConnection(url, user, password);
         PreparedStatement pstmt = conn.prepareStatement(sql)) {
        for (YourData data : yourDataList) {
            pstmt.setString(1, data.getColumn1());
            pstmt.setString(2, data.getColumn2());
            pstmt.addBatch();
        }
        pstmt.executeBatch();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    

    在这个示例中,我们使用了占位符(?)来代替实际的值,然后在循环中为每个占位符设置值。这样,即使有非法的字符,也不会影响其他值的插入。

    2023-12-05 09:40:33
    赞同 展开评论 打赏
  • 脏数据 ,此回答整理自钉群“DataWorks交流群(答疑@机器人)”

    2023-12-03 23:00:34
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    这个错误是由于在向数据库插入数据时,某个字段(symbol)的值包含了不正确的字符。具体来说,这个值是'\xF0\x9F\x90\xB8',它可能是一个表情符号。为了解决这个问题,你需要检查插入数据的代码,确保所有字段的值都是正确的字符串。如果需要处理特殊字符,可以使用Java的URLDecoder类进行解码。

    2023-12-03 17:00:09
    赞同 展开评论 打赏
  • 在DataWorks中回滚此次写入并采用每次写入一行方式提交,这可能是由于在写入过程中出现了java.sql.BatchUpdateException异常。该异常的错误信息为Incorrect string value: '\xF0\x9F\x90\xB8' for column 'symbol' at row 35

    这个错误通常表示在写入数据时,数据库检测到一个无效的字符串值。具体来说,对于第35行的symbol字段,值\xF0\x9F\x90\xB8被认为是不正确的字符串值。

    解决此问题的方法如下:

    1. 检查编码:确保数据库表的字符集和字段的编码与要写入的数据的编码兼容。如果数据包含特殊字符或使用了非标准编码,可能需要调整数据库表或字段的编码设置。

    2. 使用合适的数据类型:如果symbol字段是一个字符串类型,确保它的长度足够容纳要写入的数据。如果长度不足,可以扩展字段长度或者使用更合适的数据类型来存储数据。

    3. 特殊字符处理:如果数据中包含特殊字符,尤其是Unicode字符或表情符号等,可以尝试使用转义字符或替代字符来存储这些数据,以避免引发异常。

    4. 逐行提交:根据您提到的回滚和每次写入一行的方式进行提交,将数据以单行的形式写入数据库,这可以帮助您更方便地定位具体引发异常的数据,并进行相应的处理。

    2023-12-03 16:47:43
    赞同 展开评论 打赏

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

相关产品

  • 大数据开发治理平台 DataWorks
  • 热门讨论

    热门文章

    相关电子书

    更多
    DataWorks数据集成实时同步最佳实践(含内测邀请)-2020飞天大数据平台实战应用第一季 立即下载
    DataWorks调度任务迁移最佳实践-2020飞天大数据平台实战应用第一季 立即下载
    基于DataWorks数据服务构建疫情大屏-2020飞天大数据平台实战应用第一季 立即下载