开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

使用Flink CDC 读取mysql数据,中文乱码是怎么回事吗?

使用Flink CDC 读取mysql数据,中文乱码是怎么回事吗?如下是已使用方法

  1. flink-conf.yaml 文件里加了:env.java.opts: -Dfile.encoding=UTF-8
    2.检查mysql的库,表的字符集,确认都是UTF-8
    3.检查mysql的字符集,确认client,server,database,connection的character都是UTF-8?

展开
收起
cuicuicuic 2023-09-13 15:17:57 196 0
1 条回答
写回答
取消 提交回答
  • 在使用Flink CDC读取MySQL数据时遇到中文乱码的问题,可以尝试以下几个步骤来解决:

    在Flink的配置文件(flink-conf.yaml)中添加设置:env.java.opts: -Dfile.encoding=UTF-8。这将确保Flink在读取数据时使用UTF-8编码。

    确保MySQL数据库的库、表的字符集都是UTF-8。可以通过以下命令检查和修改:

    检查库的字符集:SELECT default_character_set_name FROM information_schema.SCHEMATA WHERE schema_name = 'your_database';,确保默认字符集是UTF-8。

    检查表的字符集:SELECT CCSA.character_set_name FROM information_schema.TABLES T, information_schema.COLLATION_CHARACTER_SET_APPLICABILITY CCSA WHERE CCSA.collation_name = T.table_collation AND T.table_schema = 'your_database' AND T.table_name = 'your_table';,确保表的字符集是UTF-8。

    修改表的字符集:ALTER TABLE your_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;。

    确保MySQL客户端、服务器、数据库、连接的字符集都是UTF-8。可以通过以下方式设置:

    在MySQL客户端连接命令中添加参数:mysql -h your_host -u your_user -p --default-character-set=utf8mb4。

    在MySQL服务器的配置文件(my.cnf或my.ini)中添加设置:

    default-character-set=utf8mb4
    
    [mysql]
    default-character-set=utf8mb4
    
    [mysqld]
    character-set-client-handshake = FALSE
    
    2023-09-27 15:09:06
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    搭建电商项目架构连接MySQL 立即下载
    搭建4层电商项目架构,实战连接MySQL 立即下载
    PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

    相关镜像