【问题标题】:Error: R cannot connect to MySQL错误:R 无法连接到 MySQL
【发布时间】:2018-10-07 19:13:29
【问题描述】:

我昨天将 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 中遇到了同样的错误。这不是我之前使用的旧版本。

标签: mysql r rmysql


【解决方案1】:

我这样解决了这个问题:

用户窗口

1. .local(drv, ...) 中的错误: 连接数据库失败:错误:无法初始化未知字符集(路径: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 location

Change MySQL default character set to UTF-8 in my.cnf?

Authentication plugin 'caching_sha2_password' cannot be loaded

【讨论】:

    【解决方案2】:

    遇到了同样的问题。尝试更改架构上的字符集。还尝试使用旧的身份验证方法选项重新安装 MySQL,但 RMySQL 仍然没有运气。

    尝试了 RMariaDB 包,它成功了。我会切换到 RMariaDB 而不是降级 MySQL。

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

    【讨论】:

      【解决方案3】:

      我也遇到了这个问题,我注意到在最近发布的 MySQL 5.8 中,服务器和客户端连接的默认字符集现在默认设置为 utf8mb4。在 MySQL 5.7 中,默认字符集设置为 utf8。

      我尝试使用服务器和客户端的字符集,将值恢复为 utf8,但我无法让它工作,所以我将安装的 MySql 恢复为5.7。 RMySQL 之后工作。

      感觉RMySQL目前不支持utf8mb4,需要更新。

      【讨论】:

        【解决方案4】:

        与此问题相关,可以在post 找到一种阻止您更改 R 首选库和/或降级 MySQL 的解决方案。

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

        【讨论】:

          【解决方案5】:

          我有同样的铅:

          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不是好那个)

          [客户]

          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';
          

          【讨论】:

            猜你喜欢
            • 2015-04-01
            • 2016-09-26
            • 1970-01-01
            • 2019-06-03
            • 2022-01-13
            • 2015-09-18
            • 2015-08-09
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多