【问题标题】:Travis CI not connecting to PostgreSQL 11.2Travis CI 未连接到 PostgreSQL 11.2
【发布时间】:2019-03-14 11:50:33
【问题描述】:
我在为 PostgreSQL 11.2 数据库构建 Rails 应用程序时遇到问题。
这是.travis.yml 文件:
rvm:
- 2.6.1
dist: xenial
services:
- postgresql
addons:
postgresql: "11.2"
apt:
packages:
- postgresql-11
before_script:
- psql --version
- psql -c 'create database kpdotcom_test;' -U postgres
- cp config/database.yml.travis config/database.yml
- bundle exec rake db:schema:load
但是,构建失败:
任何建议将不胜感激。
【问题讨论】:
标签:
ruby-on-rails
travis-ci
postgresql-11
【解决方案1】:
我也有这个问题。这是为我修复它的配置文件:
这个脚本:
- 关闭所有 9.* postgreSQL 数据库
- 安装 11.2(在撰写本文时)
- 从旧的 9.6 配置复制身份验证信息
- 创建一个名为“travis”的角色
language: ruby
rvm: 2.6.2
before_install:
- sudo apt-get update
- sudo apt-get --yes remove postgresql\*
- sudo apt-get install -y postgresql-11 postgresql-client-11
- sudo cp /etc/postgresql/{9.6,11}/main/pg_hba.conf
- sudo service postgresql restart 11
before_script:
- psql --version
- psql -c 'CREATE DATABASE {{your database name here}};' -U postgres
- psql -c 'CREATE ROLE travis SUPERUSER LOGIN CREATEDB;' -U postgres
- cp config/database.yml.travis config/database.yml
script: bundle exec rake spec
services:
- postgresql
addons:
postgresql: "11.2"
【解决方案2】:
Jonathan Wheeler 的回答对我帮助很大。但是我需要在 focal 发行版上安装 postgres 11,而最初的帖子使用 xenial。
原来我不得不稍微调整一下 travis 的配置文件。我认为这可能会帮助任何试图在focal 上安装 postgres 11 的人。基本上你需要:
- 导入存储库签名密钥 (
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -)
- 将存储库内容添加到 Ubuntu 20.04 系统 (
echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/postgresql-pgdg.list)
- 安装 PostgreSQL 11 (
sudo apt -y update && sudo apt -y install postgresql-11 postgresql-client-11)
- 更改 pg 配置文件:
- 更改端口 (
port = 5433/port = 5432)
- 简化 postgres 用户访问 (
peer/trust)
- 更改访问权限
sudo chmod 750 /var/lib/postgresql/11/main
这是脚本:
before_install:
- sudo apt -y remove postgresql\*
- wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
- echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/postgresql-pgdg.list
- sudo apt -y update
- sudo apt -y install postgresql-11 postgresql-client-11
- sudo sed -i 's/port = 5433/port = 5432/' /etc/postgresql/11/main/postgresql.conf
- sudo sed -i 's/local all postgres peer/local all postgres trust/' /etc/postgresql/11/main/pg_hba.conf
- sudo chmod 750 /var/lib/postgresql/11/main
- sudo service postgresql restart 11
我可以保留 Jonathan Wheeler 提供的 before_script。
如果不确定,您可以检查 postgres 端口,在脚本中添加一个临时行:echo $(sudo cat /etc/postgresql/11/main/pg_hba.conf) 并在日志中搜索 port = 543。
postgres auth 方法也一样:
echo $(sudo cat /etc/postgresql/11/main/postgresql.conf)