我正在尝试使用 RMySQL 软件包连接到在 Amazon RDS 平台上运行的 MariaDB 服务器。直到几天前它运行良好,直到我将我的软件包更新到最新版本。现在尝试连接到数据库会引发此错误:
Error: Lost connection to MySQL server at 'reading authorization packet', system error: 0
我尝试过的事情: 恢复到以前版本的R,RMySQL和DBI;将主机名替换为 IP 地址,connect_timeout = 10 秒。
>sessionInfo()
R version 3.4.0 (2017-04-21)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.2 LTS
Matrix products: default
BLAS: /usr/lib/libblas/libblas.so.3.6.0
LAPACK: /usr/lib/lapack/liblapack.so.3.6.0
locale:
[1] LC_CTYPE=en_IN.UTF-8 LC_NUMERIC=C
LC_TIME=en_IN.UTF-8 LC_COLLATE=en_IN.UTF-8
[5] LC_MONETARY=en_IN.UTF-8 LC_MESSAGES=en_IN.UTF-8
LC_PAPER=en_IN.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
LC_MEASUREMENT=en_IN.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] arules_1.5-2 data.table_1.10.4 bit64_0.9-7 bit_1.1-12
magrittr_1.5 NbClust_3.0
[7] stringr_1.2.0 RMySQL_0.10.11 DBI_0.6-1 rjson_0.2.15
dplyr_0.5.0 Matrix_1.2-10
loaded via a namespace (and not attached):
[1] Rcpp_0.12.11 lattice_0.20-35 assertthat_0.2.0 grid_3.4.0
R6_2.2.1 rlang_0.1.1
[7] stringi_1.1.5 lazyeval_0.2.0 tools_3.4.0 compiler_3.4.0
tibble_1.3.3
但是,我能够在本地MySQL设置上使用相同的设置运行查询。
我能够按照 @Page 的建议查看软件包版本控制,使用 R 3.4 在我的 PC 上解决此问题。但是,我不仅需要安装早期版本的 RMySQL(从 0.10.11 恢复到 0.10.9),还需要使用以下命令更改其依赖包 DBI 上的版本(从 0.6-1 恢复到 0.5):
require(devtools)
install_version("DBI", version = "0.5", repos = "http://cran.us.r-project.org")
install_version("RMySQL", version = "0.10.9", repos = "http://cran.us.r-project.org")