使用RPostgreSQL建立数据库连接时R程序崩溃问题咨询
针对你在使用RPostgreSQL建立数据库连接时R程序崩溃的情况,结合你的环境(R 3.4.3,x86_64-apple-darwin15.6.0),分享几个实用的排查和修复步骤:
检查PostgreSQL客户端库版本兼容性
R 3.4.3属于比较旧的版本,RPostgreSQL对系统里的PostgreSQL客户端库(比如libpq)版本敏感度很高。如果你的macOS上装的是较新的PostgreSQL客户端,很可能和旧版R的包存在兼容性冲突。你可以先在终端运行命令查看当前libpq版本:pg_config --version如果版本和
RPostgreSQL要求不匹配,建议安装和R 3.4.3适配的PostgreSQL客户端版本(比如9.x系列),之后重新安装RPostgreSQL并指定库路径:install.packages("RPostgreSQL", type = "source", configure.args = "--with-libpq=/path/to/your/postgresql/lib")重置RPostgreSQL包并重新安装
有时候包的安装文件损坏也会导致崩溃问题。先卸载现有包,再从源码重新安装:remove.packages("RPostgreSQL") install.packages("RPostgreSQL", type = "source")注意从源码安装需要你的macOS具备Xcode命令行工具,如果没有的话,先在终端运行
xcode-select --install完成安装。测试最小化连接代码
先排除其他代码的干扰,用最基础的连接代码测试是否依然崩溃:library(RPostgreSQL) drv <- dbDriver("PostgreSQL") con <- dbConnect(drv, dbname = "your_dbname", host = "your_host", port = 5432, user = "your_user", password = "your_password") dbDisconnect(con)如果这段最小代码也崩溃,那大概率是包与系统的兼容性问题;如果不崩溃,再逐步添加你原来的代码,定位具体的问题点。
检查系统架构匹配性
你的R是x86_64架构,要确保PostgreSQL客户端库也是同架构的(你的系统是darwin15.6.0,应该是Intel Mac,不用考虑arm64混用问题,但还是确认下更稳妥)。可以在终端运行命令查看架构信息:file /usr/local/lib/libpq.dylib确认输出的架构和R的x86_64一致。
内容的提问来源于stack exchange,提问作者Brash Equilibrium

