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 - 重新创建超级用户并测试连接:
能进入PostgreSQL命令行即表示客户端与用户配置正常。sudo -u postgres createuser -s jenn psql -U jenn postgres
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
相关产品推荐
相关产品推荐

