You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级至R 4.2.1后使用DBI操作PostgreSQL时R/RStudio崩溃求助

R 4.2.1连接PostgreSQL时dbGetQuery/dbWriteTable(append=TRUE)导致崩溃

问题描述

本地部署PostgreSQL 12数据库,此前通过R连接进行数据读写、追加操作均正常。升级至R 4.2.1后出现以下异常:

  • 使用DBI::dbGetQuery()读取数据时,RStudio崩溃(但直接用R运行无问题)
  • 使用DBI::dbWriteTable(append = TRUE)追加数据时,RStudio和R均崩溃

复现代码

library(DBI)
library(RPostgreSQL)

pg <- dbDriver("PostgreSQL")

db_connection <- dbConnect(pg, dbname = "williampetti", 
                         user = "williampetti", 
                         password = "",
                         host = "localhost", 
                         port = 5432)

data(mtcars)

# 创建新表无问题
DBI::dbWriteTable(db_connection
                  , name = 'mtcars_test'
                  , value = mtcars
                  , overwrite = TRUE)

# 查看字段无报错
DBI::dbListFields(db_connection, 'mtcars_test')

# 此操作导致RStudio崩溃(纯R环境正常)
DBI::dbGetQuery(db_connection
                , 'select * from mtcars_test')

# 此操作导致RStudio和R均崩溃
DBI::dbWriteTable(db_connection
                  , name = 'mtcars_test'
                  , value = mtcars
                  , append = TRUE)

环境信息

PostgreSQL 12
RStudio 2022.07.1(版本号554)
R version 4.2.1 (2022-06-23)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Monterey 12.5.1

attached packages:
[1] RPostgres_1.4.4 DBI_1.1.3       
loaded packages(关键冲突项):
[13] RPostgreSQL_0.7-3

解决方案

1. 替换旧驱动包,使用RPostgres替代RPostgreSQL

RPostgreSQL是停更已久的维护包,对R 4.2+版本兼容性不足;RPostgres是官方维护的新一代PostgreSQL驱动,适配性更强。操作步骤:

  • 卸载RPostgreSQL:
    remove.packages("RPostgreSQL")
    
  • 使用RPostgres重建连接并测试:
    library(DBI)
    library(RPostgres)
    
    db_connection <- dbConnect(RPostgres::Postgres(), 
                              dbname = "williampetti", 
                              user = "williampetti", 
                              password = "",
                              host = "localhost", 
                              port = 5432)
    
    # 测试读取
    DBI::dbGetQuery(db_connection, 'select * from mtcars_test')
    # 测试追加
    DBI::dbWriteTable(db_connection, name = 'mtcars_test', value = mtcars, append = TRUE)
    

2. 清理包冲突

环境中同时加载RPostgres和RPostgreSQL会引发底层驱动冲突,确保仅保留一个PostgreSQL驱动包,重启R/RStudio后再测试。

3. 更新RStudio至最新版本

旧版RStudio(2022.07.1)与R 4.2.1存在交互bug,升级到最新版RStudio可解决部分兼容性问题。

4. 测试RStudio安全模式

按住Ctrl+Shift启动RStudio进入安全模式(禁用所有插件),测试读写操作是否正常,排查是否由第三方插件导致崩溃。


内容的提问来源于stack exchange,提问作者BillPetti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 03:48:36