错误:R无法连接到MySQL

6
我昨天将MySQL更新到最新版本8.0.11,并尝试使用RMySQL连接MySQL,但它无法工作,我找不到任何解决方案。
我的代码:
library(RMySQL) 
con <- dbConnect(MySQL(), user="hello", password="hi", dbname = "webscrape", host="xx.xxx.xxx.xxx", port=xxxx)

错误:

Error in .local(drv, ...) : 
  Failed to connect to database: Error: Can't initialize character set unknown (path: compiled_in)

我在最新版本的R和MySQL中遇到了相同的错误。而这在我之前使用的旧版本中并没有出现过。 - mitrabhanu
5个回答

4
我是这样解决这个问题的:
用户使用Windows
1. .local(drv, ...)中的错误: 无法连接到数据库:错误:无法初始化字符集unknown(路径:compiled_in)
添加以下行后:
文件路径:%PROGRAMDATA%\MySQL\MySQL Server X.X\my.ini
    [mysqld]
    collation-server = utf8_unicode_ci
    init-connect='SET NAMES utf8'
    character-set-server = utf8
    skip-character-set-client-handshake

    [client]
    default-character-set   = utf8

    [mysql]
    default-character-set   = utf8

2- 认证插件'caching_sha2_password'无法加载

    ALTER USER 'yourusername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'youpassword';

参考资料:

MySQL my.ini 配置文件位置

如何在my.cnf文件中将MySQL的默认字符集更改为UTF-8?

“caching_sha2_password”身份验证插件无法加载


1
我也遇到了这个问题,并且注意到最近发布的MySQL 5.8,默认情况下服务器和客户端连接的字符集现在已经默认设置为utf8mb4。而MySQL 5.7的默认字符集是utf8。
我尝试调整服务器和客户端的字符集,将值恢复为utf8,但我无法让它工作,所以我将我的安装的MySQL版本恢复到5.7。然后RMySQL就可以工作了。
目前似乎RMySQL不支持utf8mb4,需要更新。

1

我遇到了相同的问题。尝试在模式上更改字符集。还尝试使用传统认证方法选项重新安装MySQL,但在RMySQL上仍然没有运气。

尝试了RMariaDB包,它有效。我建议切换到RMariaDB而不是降级MySQL。

https://cran.r-project.org/web/packages/RMariaDB/


0

关于这个问题,一个解决方案可以防止您更改R首选库和/或降级MySQL,可以在post中找到。

您只需要更改my.cnf设置即可。


0

我有相同的问题:

Error in .local(drv, ...) : 
  Failed to connect to database: Error: Can't initialize character set unknown (path: compiled_in)

我尝试了Hugo的解决方案(修改my.ini)和David Guerin的解决方案(使用RMariaDB),但两者都不起作用。在进行了一些研究和经验积累后,这个解决方案对我有效。

修改my.ini(这是找到 C:\ProgramData\MySQL\MySQL Server 8.0 的路径):

与Hugo的答案相反,你需要使用utf8mb4(utf8不是正确的选择)

[client]

default-character-set = utf8 (the old line "utf" to "utfmb4")
default-character-set = utf8mb4 (the new line with modification)

[mysql]

default-character-set = utf8 (the old line "utf" to "utfmb4")
default-character-set = utf8mb4 (the new line with modification)

[mysqld]

character-set-client-handshake = FALSE  (new line to add)
character-set-server = utf8mb4  (the old line "utf" to "utfmb4")        
collation-server = utf8mb4_unicode_ci   (new line to add)
skip-character-set-client-handshake (Line to remove)

在MySQL中,您需要更改密码:
ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY 'mot-passe';

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接