跨源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。
- 执行如下SQL更改数据库字符集。
ALTER DATABASE DATABASE_NAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- 执行如下SQL更改表字符集。
ALTER TABLE TABLE_NAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- 执行如下SQL更改表中所有字段的字符集。
ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
跨源连接运维报错 所有常见问题
- 新建跨源连接,显示已激活,但使用时报communication link failure错误
- 跨源访问MRS HBase,连接超时,日志未打印错误
- DLI跨源连接报错找不到子网
- 跨源RDS表,执行insert overwrite报Incorrect string value错误
- 创建RDS跨源表报空指针错误
- 对跨源DWS表执行insert overwrite操作,报错:org.postgresql.util.PSQLException: ERROR: tuple concurrently updated
- 通过跨源表向CloudTable Hbase表导入数据,executor报错:RegionTooBusyException
- 通过DLI跨源写DWS表,非空字段出现空值异常
- 更新跨源目的端源表后,未同时更新对应跨源表,导致insert作业失败
more