文档首页/ 数据湖探索 DLI/ 常见问题/ 增强型跨源连接类/ 跨源RDS表,执行insert overwrite提示Incorrect string value错误怎么办?
更新时间:2024-11-08 GMT+08:00

跨源RDS表,执行insert overwrite提示Incorrect string value错误怎么办?

问题现象

客户在数据治理中心DataArts Studio创建DLI的跨源RDS表,执行insert overwrite语句向RDS写入数据报错:DLI.0999: BatchUpdateException: Incorrect string value: '\xF0\x9F\x90\xB3' for column 'robot_name' at row 1。

原因分析

客户的数据中存在emoj表情,这些表情是按照四个字节一个单位进行编码的,而通常使用的utf-8编码在mysql数据库中默认是按照三个字节一个单位进行编码的,这个原因导致将数据存入mysql数据库时出现错误。

出现该问题可能原因如下:

  • 数据库编码问题。

处理步骤

修改字符集为utf8mb4。

  1. 执行如下SQL更改数据库字符集。

    ALTER DATABASE DATABASE_NAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

  2. 执行如下SQL更改表字符集。

    ALTER TABLE TABLE_NAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

  3. 执行如下SQL更改表中所有字段的字符集。

    ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;