文档首页> 数据湖探索 DLI> 常见问题> 跨源连接相关问题> 跨源连接运维报错> 跨源RDS表,执行insert overwrite报Incorrect string value错误
更新时间:2023-03-10 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;

分享:

跨源连接运维报错 所有常见问题

more