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

MariaDB从utf8mb3转为utf8mb4后PowerShell连接报错问题咨询

你遇到的报错并非PowerShell本身的配置问题,核心是两个遗漏场景导致驱动识别到utf8mb3字符集:

  1. 仅修改了表和列的字符集,未修改数据库级别的默认字符集,连接时.NET驱动会优先读取库的默认字符集
  2. MariaDB 10.6版本中utf8默认是utf8mb3的别名,旧版MySQL驱动对该别名适配存在缺陷,会直接识别为不支持的utf8mb3

解决步骤

  • 第一步:修改目标数据库的默认字符集与排序规则,执行如下SQL:
ALTER DATABASE pcinventory CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
  • 第二步:全量校验库内所有表、列的字符集,避免遗漏未修改的对象:
    1. 检查是否存在字符集非utf8mb4的表:
    SELECT TABLE_NAME, TABLE_COLLATION
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_SCHEMA = 'pcinventory' AND TABLE_COLLATION NOT LIKE 'utf8mb4%';
    
    1. 检查是否存在字符集非utf8mb4的列:
    SELECT TABLE_NAME, COLUMN_NAME, COLLATION_NAME
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_SCHEMA = 'pcinventory' AND COLLATION_NAME NOT LIKE 'utf8mb4%';
    
    对查询返回的表和列,按你已掌握的ALTER TABLE语句完成字符集修改即可。
  • 第三步:在PowerShell连接命令中强制指定连接字符集,修改你的连接语句,添加-CharSet utf8mb4参数:
Connect-MySqlServer -server "127.0.0.1" -Database "pcinventory" -CharSet utf8mb4 # 其余原有参数保持不变
  • 第四步:如果以上操作后仍报错,升级你使用的PowerShell MySQL模块,当前你用的it.wiechecki.ps.mysql模块依赖的旧版MySql.Data连接器对MariaDB 10.6+的字符集别名适配存在缺陷,可升级模块或替换为适配性更好的基于MySqlConnector的PowerShell MySQL模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:57:03