6

我在为 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

但是,构建失败:

在此处输入图像描述

任何建议将不胜感激。

4

2 回答 2

5

我也有这个问题。这是为我修复它的配置文件:

这个脚本:

  1. 关闭所有 9.* postgreSQL 数据库
  2. 安装 11.2(在撰写本文时)
  3. 从旧的 9.6 配置中复制身份验证信息
  4. 创建一个名为“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"
于 2019-03-22T23:48:03.760 回答
0

乔纳森·惠勒的回答对我帮助很大。但是我需要在focal发行版上安装 postgres 11,而最初的帖子使用xenial.

结果我不得不稍微调整一下 travis 的配置文件。我认为这可能会帮助任何试图在focal. 基本上你需要:

  • 导入存储库签名密钥 ( 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

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)

于 2021-11-05T11:15:51.270 回答