Travis CI с Node.js и Postgresql: взаимосвязи ошибок не существует

Вот результат: https://travis-ci.org/maxdobeck/gateway/jobs/373773101.

Почему я получаю эту ошибку: error: relation "members" does not exist

Я могу использовать файл .sql для создания таблиц, которые мне нужны, но когда приходит время запускать тесты, база данных сообщает, что таблиц не существует? Я неправильно настраиваю коррекцию базы данных?

Вы уверены, что скрипт подключается к БД travis? Сначала я предполагаю, что вы ищете таблицы либо в неправильной базе данных, либо в неправильной схеме.

Jim Jones 02.05.2018 07:46

Это то, к чему я склонялся. Я только что увидел кнопку «Необработанный журнал», и когда я вхожу: $ psql -U postgres -d scheduler -c '\dt;', я получаю «Связи не найдены». Поэтому при создании таблиц я не должен подключаться к правильной базе данных. Не знаю, как проверить, но теперь, когда я могу протестировать материал с помощью необработанного журнала, который помогает.

amishpanda 02.05.2018 08:00

Вы можете проверить эти сценарии, если это так? travis-ci.org/maxdobeck/gateway/jobs/373773101#L481 Я не вижу их содержание

Jim Jones 02.05.2018 08:01
travis-ci.org/maxdobeck/gateway Получил зеленый свет! Технически это был скрипт создания таблиц. Я использовал функцию generate_uuid так: stackoverflow.com/questions/12505158/… добавление строки create extension помогло. Эта ошибка указывала на настоящую основную причину: psql:./db/migrations/travis_setup.sql:11: ERROR: function uuid_generate_v4() does not exist HINT: No function matches the given name and argument types. You might need to add explicit type casts..
amishpanda 02.05.2018 08:07

классно! Удачи тебе с твоим проектом :)

Jim Jones 02.05.2018 08:09
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
750
2

Ответы 2

Технически это был скрипт создания таблиц. Я использовал функцию generate_uuid, как в этом SO сообщение

Добавление линии создания расширения сделало свое дело.

Эта ошибка указывала на настоящую первопричину:

ERROR: function uuid_generate_v4() does not exist HINT: No function matches the given name and argument types. You might need to add explicit type casts.

У меня была такая же проблема, и я ее исправил. Проблема, вероятно, в том, что Трэвис не может создать таблицу, которой в вашем случае является members. Вам нужно добавить следующие строки в ваш файл .travis.yaml

    before_script:
  - psql -c "create database yourdbname;" -U postgres
  - psql -c "create user dbusername WITH PASSWORD 'yourpassword';" -U postgres

создать сценарий, содержащий запрос на создание таблицы. мой напоминает что-то вроде этого.

const pg = require('pg');

const config = {
  user: 'yourdbusername', // this is the db user credential
  database: 'yourdb',
  password: 'yourdbpass',
  port: 5432,
  max: 10, // max number of clients in the pool
  idleTimeoutMillis: 30000
};
const pool = new pg.Pool(config);

pool.on('connect', () => {
  console.info('connected to the Database');
});

/**
 * Create Tables
 */
const createTables = () => {
  const queryText = `your query`;

  pool
    .query(queryText)
    .then(res => {
      console.info(res);
      pool.end();
    })
    .catch(err => {
      console.info(err);
      pool.end();
    });
};

pool.on('remove', () => {
  console.info('client removed');
  process.exit(0);
});

module.exports = {
  createTables,
  pool
};
require('make-runnable');

предпочтительнее использовать удаленную базу данных, такую ​​как elephantSQL, или любую другую удаленную базу данных postgres. Перейдите на свой package.json и добавьте следующую строку под скриптами

    "create": "node ./path/to/the/file createTables",

Теперь обновите ваш before_script до этого

before_script:
  - psql -c "create database wayfarer;" -U postgres
  - psql -c "create user wayfarer WITH PASSWORD 'rrwcscrz1';" -U postgres
  - "npm run create" 

Также убедитесь, что вы установили пакеты make-runnable и pg.

Другие вопросы по теме