You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL迁移至MySQL遇\xF1o字符串错误,求解决方案

PostgreSQL转MySQL迁移字符集报错解决方案

一、修复PostgreSQL端编码环境

原数据库的C/荷兰语编码会导致特殊字符(如ñ)无法正确转换,需创建纯UTF8编码的中转库:

  • 基于template0创建指定编码和排序规则的数据库(Windows环境适用):
    CREATE DATABASE pg_utf8_db WITH ENCODING 'UTF8' LC_COLLATE 'English_United States.65001' LC_CTYPE 'English_United States.65001' TEMPLATE template0;
    
  • 导出原库数据并导入到新UTF8库:
    # Windows下需替换为PostgreSQL安装目录的bin路径
    "C:\Program Files\PostgreSQL\{版本号}\bin\pg_dump.exe" -d old_pg_db -f pg_data_dump.sql
    "C:\Program Files\PostgreSQL\{版本号}\bin\psql.exe" -d pg_utf8_db -f pg_data_dump.sql
    

二、确认MySQL配置生效

修改my.ini后需确保配置完全生效:

  • 重启MySQL服务,执行以下SQL验证:
    SHOW VARIABLES LIKE '%character%';
    SHOW VARIABLES LIKE '%collation%';
    
    需确保character_set_client、character_set_connection、character_set_results均为utf8mb4,collation_connection为utf8mb4_unicode_ci。
  • 若使用root用户迁移,需手动执行以下语句(init_connect对超级用户不生效):
    SET collation_connection = utf8mb4_unicode_ci;
    SET NAMES utf8mb4;
    

三、调整MySQL Workbench迁移设置

  • 源数据库连接:在PostgreSQL连接的高级选项中,添加client_encoding=UTF8参数,强制以UTF8编码读取PostgreSQL数据。
  • 目标表配置:确认aat表的rdfs__label列字符集为utf8mb4,排序规则为utf8mb4_unicode_ci。
  • 数据迁移步骤:勾选「使用批量插入」选项,减少单条数据插入时的编码转换异常。

四、手动导入备选方案

若Workbench仍报错,直接通过SQL文件迁移:

  • 用pg_dump导出UTF8库的数据为SQL文件,用Notepad++将文件编码转换为UTF-8(无BOM)。
  • 用MySQL命令行导入:
    mysql -u {用户名} -p {目标库名} < pg_utf8_data_dump.sql
    
    导入前先执行SET NAMES utf8mb4;确保编码一致。

内容的提问来源于stack exchange,提问作者Jeroen Steen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 15:25:22