R连接MySQL失败求助:升级至MySQL 8.0.11后RMySQL无法连接
解决RMySQL连接MySQL 8.0.11时的字符集初始化失败问题
刚踩过这个坑!升级MySQL到8.0之后确实会碰到这个字符集不兼容的问题,给你几个亲测有效的解决方法:
连接时手动指定字符集
这是最快的临时解决办法,在dbConnect里加上charset='utf8mb4'参数——因为MySQL 8.0默认的字符集已经改成utf8mb4了,而RMySQL可能还在用旧的默认设置。修改后的代码:library(RMySQL) con <- dbConnect(MySQL(), user="hello", password="hi", dbname = "webscrape", host="xx.xxx.xxx.xxx", port=xxxx, charset='utf8mb4')修改MySQL全局配置统一字符集
如果不想每次连接都手动指定,直接改MySQL的配置文件一劳永逸:- Linux系统找到
/etc/my.cnf(或/etc/mysql/my.cnf),Windows系统找my.ini(通常在MySQL安装目录的data文件夹里) - 在配置文件里添加或更新以下内容:
[client] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci - 保存后重启MySQL服务,这样客户端和服务端的默认字符集就统一了。
- Linux系统找到
更新RMySQL到最新版本
旧版本的RMySQL可能对MySQL 8.0的新特性支持不好,试试更新包:install.packages("RMySQL")如果CRAN上的版本还是不行,直接从GitHub安装开发版:
install.packages("devtools") devtools::install_github("rstats-db/RMySQL")
为什么会出现这个错误?
MySQL 8.0之前的默认字符集是utf8(实际上是utf8mb3,只支持3字节的Unicode字符),而8.0开始默认换成了utf8mb4(支持完整的Unicode,包括emoji等4字节字符)。RMySQL的旧版本在连接时默认请求的字符集和MySQL现在的默认不匹配,就会抛出"Can't initialize character set unknown"的错误。
内容的提问来源于stack exchange,提问作者Lara19
相关产品推荐
相关产品推荐

