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

Ruby on Rails连接PostgreSQL失败,依赖问题求助

解决Ubuntu 22.04 WSL2下Rails连接PostgreSQL的依赖与客户端问题

1. 匹配PostgreSQL客户端与现有服务版本

你当前pg_config --version显示为14.6,但系统默认源提供的是更高版本的客户端,导致版本冲突。通过添加PostgreSQL官方源获取兼容22.04的14版本包:

  • 添加官方APT源:
    sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    sudo apt update
    
  • 安装对应版本的客户端与开发库:
    sudo apt install postgresql-client-14 libpq-dev=14.6-1.pgdg22.04+1
    

2. 修复被保留的未升级包

执行命令解除libpq-dev和libpq5的保留锁定,再重新升级:

sudo apt-mark unhold libpq-dev libpq5
sudo apt upgrade libpq-dev libpq5

若仍有依赖冲突,使用aptitude获取更灵活的依赖解决方案:

sudo apt install aptitude
sudo aptitude upgrade libpq-dev libpq5

3. 验证PostgreSQL服务与用户配置

  • 启动并启用PostgreSQL 14服务:
    sudo systemctl start postgresql@14-main
    sudo systemctl enable postgresql@14-main
    
  • 重新创建超级用户并测试连接:
    sudo -u postgres createuser -s jenn
    psql -U jenn postgres
    
    能进入PostgreSQL命令行即表示客户端与用户配置正常。

4. 配置Rails数据库连接

修改项目根目录下的config/database.yml,匹配你的PostgreSQL配置:

default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: jenn
  password:
  host: localhost
  port: 5432

development:
  <<: *default
  database: myapp_development

test:
  <<: *default
  database: myapp_test

执行数据库初始化命令:

rails db:create

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 21:39:36