Travis-CI и PostgreSQL: psql: ошибка: не удалось подключиться к серверу: нет такого файла или каталога

#postgresql #travis-ci

#postgresql #трэвис-ки

Вопрос:

Я пытаюсь получить базу данных PostgreSQL 12 для моей сборки Travis-CI. Я пытаюсь уже несколько часов. Я просмотрел другие темы в сообществе Travis-CI и в StackOverflow. Но я не добился никакого прогресса, и он продолжает терпеть неудачу.

Я использую dist: focal so, у него PostgreSQL 12.2. Поэтому мне не нужно связываться с addons: postgres: '12' и apt: ...
psql --version Команда работает, но psql -c 'create database ... команда не работает.

Если я удалю psql -c 'create database ... команду, мое приложение не запустится из-за отсутствия базы данных, с

 Caused by: org.postgresql.util.PSQLException at ConnectionFactoryImpl.java:303
Caused by: java.net.ConnectException at Net.java:-2
 

Да, я прочитал документацию по настройке базы данных Travis.
Ссылка на сборку Трэвиса: lukegjpotter/pokemon-team-building-tools/jobs/480144598.
Пожалуйста, помогите.

Соответствующие строки в моем travis.файл yml выглядит следующим образом:

 language: java
os: linux
dist: focal
jdk:  oraclejdk13
services:
  - postgresql
before_script:
  - cp config/database.yml.travis config/database.yml
  - psql --version
  - psql -c 'create database travis_ci_test;' -U postgres
env: DATABASE_URL=postgres://postgres:@localhost:5432/travis_ci_test
 

Соответствующие строки в моем выводе сборки выглядят следующим образом:

 $ psql --version
psql (PostgreSQL) 12.5 (Ubuntu 12.5-0ubuntu0.20.04.1)

$ psql -c 'create database travis_ci_test;' -U postgres
psql: error: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
The command "psql -c 'create database travis_ci_test;' -U postgres" failed and exited with 2 during .
 

С уважением,
Люк

Ответ №1:

Проблема заключается в номере порта в сообщении об ошибке.

 connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
 

В некоторых дистрибутивах и версиях postgres Postgres работает на порту 5432 .
Включен dist: focal , и services: postgresql порт есть 5433 . psql Команда использует порт 5432 .
Чтобы решить эту проблему, вам нужно добавить -p 5433 в psql команду:

 $ psql -c 'CREATE DATABASE travis_ci_test;' -U postgres -p 5433
 

Это приведет к новой ошибке;

 psql: error: FATAL:  Peer authentication failed for user "postgres"
The command "psql -c 'CREATE DATABASE travis_ci_test;' -U postgres -p 5433" failed and exited with 2 during .
 

Но это ошибка на другой день.