Вот результат: https://travis-ci.org/maxdobeck/gateway/jobs/373773101.
Почему я получаю эту ошибку:
error: relation "members" does not exist
Я могу использовать файл .sql для создания таблиц, которые мне нужны, но когда приходит время запускать тесты, база данных сообщает, что таблиц не существует? Я неправильно настраиваю коррекцию базы данных?
Это то, к чему я склонялся. Я только что увидел кнопку «Необработанный журнал», и когда я вхожу: $ psql -U postgres -d scheduler -c '\dt;'
, я получаю «Связи не найдены». Поэтому при создании таблиц я не должен подключаться к правильной базе данных. Не знаю, как проверить, но теперь, когда я могу протестировать материал с помощью необработанного журнала, который помогает.
Вы можете проверить эти сценарии, если это так? travis-ci.org/maxdobeck/gateway/jobs/373773101#L481 Я не вижу их содержание
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.
.
классно! Удачи тебе с твоим проектом :)
Технически это был скрипт создания таблиц. Я использовал функцию 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
.
Вы уверены, что скрипт подключается к БД
travis
? Сначала я предполагаю, что вы ищете таблицы либо в неправильной базе данных, либо в неправильной схеме.