Travis CI w / Node.js和Postgresql:错误关系不存在

时间:2018-05-02 05:31:25

标签: node.js postgresql travis-ci

这里有输出:https://travis-ci.org/maxdobeck/gateway/jobs/373773101

为什么我收到此错误: error: relation "members" does not exist

我能够使用.sql文件来创建我需要的表格,但是当需要运行测试时,数据库表示这些表格不存在?我是否错误地配置了数据库更正?

2 个答案:

答案 0 :(得分:0)

技术上是创建表脚本。我正在使用generate {uuid函数,就像在这个SO post

中一样

添加创建扩展行就可以了。

此错误指向真正的根本原因:

  

错误:功能   uuid_generate_v4()不存在提示:没有函数匹配给定的   名称和参数类型。您可能需要添加显式类型转换。

答案 1 :(得分:0)

我遇到了同样的问题,我刚刚解决了它。问题可能是因为travis无法创建在您的情况下为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.log('connected to the Database');
});

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

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

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

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

最好使用象大象SQL之类的远程数据库或任何其他远程postgres db。 转到您的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-runnablepg软件包