使用PowerShell MySQL Cmdlet连接MySQL数据库失败:提示utf8mb3字符集不被.NET Framework支持
解决Connect-MySqlServer报错"utf8mb3 is not supported by .Net Framework"的问题
我之前也碰到过一模一样的情况——明明改了数据库默认字符集,连接还是报这个错,下面是几个能解决问题的方案,你按顺序试试:
1. 在连接命令里强制指定utf8mb4字符集
服务器默认字符集改了,但PowerShell的MySQL Cmdlet可能还是会用旧的字符集参数发起连接,直接在命令里加上字符集参数就能绕开这个问题:
Connect-MySqlServer -Server "127.0.0.1" -Database "pcinventory" -UserName "root" -Password $pass -CharacterSet utf8mb4
2. 检查并修改现有数据库/表的字符集
你修改的是服务器全局默认字符集,但已经创建好的数据库、表并不会自动同步这个设置,得手动更新:
- 先登录MySQL控制台,检查目标数据库的字符集:
SELECT schema_name, default_character_set_name FROM information_schema.schemata WHERE schema_name = 'pcinventory';
- 如果结果还是utf8mb3,执行修改命令:
ALTER DATABASE pcinventory CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- 接着检查数据库内的表字符集:
SELECT table_name, table_collation FROM information_schema.tables WHERE table_schema = 'pcinventory';
- 对每个仍为utf8mb3的表执行修改:
ALTER TABLE [你的表名] CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3. 升级PowerShell的MySQL模块
旧版本的it.wiechecki.ps.mysql模块对utf8mb4的支持有缺陷,更新到最新版本大概率能解决问题:
# 先检查当前版本 Get-Module -ListAvailable it.wiechecki.ps.mysql # 更新模块 Update-Module -Name it.wiechecki.ps.mysql -Force
如果更新失败,可以先卸载旧版本再重装:
Uninstall-Module -Name it.wiechecki.ps.mysql -Force Install-Module -Name it.wiechecki.ps.mysql -Scope CurrentUser
4. 确认.NET Framework版本支持
utf8mb4在.NET Framework 4.5及以上版本才完全支持,你可以在PowerShell里查看当前版本:
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse | Get-ItemProperty -Name Version -ErrorAction SilentlyContinue | Where-Object { $_.Version -match '^[4-9]\.' } | Sort-Object Version -Descending
如果版本低于4.5,建议升级到最新的.NET Framework版本。
内容的提问来源于stack exchange,提问作者claeys
相关产品推荐
相关产品推荐

