Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript CircleCi有时无法连接到构建中的Postgres_Javascript_Node.js_Postgresql_Knex.js_Circleci - Fatal编程技术网

Javascript CircleCi有时无法连接到构建中的Postgres

Javascript CircleCi有时无法连接到构建中的Postgres,javascript,node.js,postgresql,knex.js,circleci,Javascript,Node.js,Postgresql,Knex.js,Circleci,基本上,我有一个Nodejs项目,它通过knex连接到postgres数据库,我使用CircleCI进行测试。它可以工作,但是偶尔一个构建会因为“错误:connect-econnrefered127.0.0.1:5432”而失败,我不知道为什么;它在我的机器上运行没有问题,版本中一定有差异 运行以创建测试数据库的文件如下所示: "严格使用",; 需要'dotenv'.config; const connectionOptions=require`${process.cwd}/knexfile.

基本上,我有一个Nodejs项目,它通过knex连接到postgres数据库,我使用CircleCI进行测试。它可以工作,但是偶尔一个构建会因为“错误:connect-econnrefered127.0.0.1:5432”而失败,我不知道为什么;它在我的机器上运行没有问题,版本中一定有差异

运行以创建测试数据库的文件如下所示:

"严格使用",; 需要'dotenv'.config; const connectionOptions=require`${process.cwd}/knexfile.js`[`${process.env.NODE_env}`]; const knex=需要'knex'连接选项; 日志“与默认postgres数据库建立了新连接”; //删除与测试数据库的所有其他连接 knex.raw`select pg_terminate_backendpid from pg_stat_activity where datname='${process.env.pg_TEST_DATABASE}'` .然后=>{ log“删除了与测试数据库的所有其他连接”; //删除测试数据库(如果存在) 返回knex.raw`DROP DATABASE IF EXISTS${process.env.PG_TEST_DATABASE};`; } .然后=>{ log“已删除测试数据库(如果存在)”; //创建测试数据库 返回knex.raw`CREATE DATABASE${process.env.PG_TEST_DATABASE}`; } .然后=>{ 日志“创建了测试数据库”; 返回流程。退出;
}; 对任何感兴趣的人来说,我都能想出一个解决方案。根据上面评论中的Lina建议,我为circleci找到了合适的代码,该代码在进入下一步之前等待postgres启动,我只是添加了一个命令,在创建数据库之前等待5432端口打开,如下所示:

-运行: 名称:安装本地依赖项 命令:npm install -运行: 名称:等待Postgres启动 命令:dockerize-waittcp://localhost:5432 -超时1m -运行: 名称:创建数据库
命令:npm run db:reset:test只是一个猜测,但可能PostgreSQL没有及时启动?尝试等待数据库守护进程的端口打开:感谢Linas的建议,我一直在尝试不同的事情,每次我认为问题解决了,它就会再次发生。他们在你的建议中使用的代码是另一种语言,我必须研究javascript或circleci版本,但是你建议我把它放在哪里?在yml文件中?创建测试db js文件?