跨源连接运维报错 跨源RDS表,执行insert overwrite报Incorrect string value错误 问题现象 客户在数据治理中心DataArts Studio创建DLI的跨源RDS表,执行insert overwrite语句向RDS写入数据报错:DLI.0999: BatchUpdateException: Incorrect string value: 'xF0x9Fx90xB3' for column 'robotname' at row 1。 原因分析 客户的数据中存在emoj表情,这些表情是按照四个字节一个单位进行编码的,而通常使用的utf8编码在mysql数据库中默认是按照三个字节一个单位进行编码的,这个原因导致将数据存入mysql数据库时出现错误。 出现该问题可能原因如下: 数据库编码问题。 处理步骤 修改字符集为utf8mb4。 1.执行如下SQL更改数据库字符集。 ALTER DATABASE DATABASENAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4generalci; 2.执行如下SQL更改表字符集。 ALTER TABLE TABLENAME DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4generalci; 3.执行如下SQL更改表中所有字段的字符集。 ALTER TABLE TABLENAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4generalci; 创建RDS跨源表报空指针错误 问题现象 客户创建RDS跨源表失败,报空指针的错误。 原因分析 客户建表语句: CREATE TABLE IF NOT EXISTS dlitords USING JDBC OPTIONS ( 'url''jdbc:mysql://tords1174405119oLRHAGE7.datasource.com:5432/postgreDB', 'driver''org.postgresql.Driver', 'dbtable''pgschema.test1', 'passwdauth' 'xxx', 'encryption' 'true'); 客户的RDS数据库为PostGre集群,url的协议头填写错误导致。 处理步骤 修改url为'url''jdbc:postgresql://tords1174405119oLRHAGE7.datasource.com:5432/postgreDB',重新创建跨源表成功。 对跨源DWS表执行insert overwrite操作,报错:org.postgresql.util.PSQLException: ERROR: tuple concurrently updated