gpt4 book ai didi

node.js - "Permission denied"在 Travis-CI 中使用 PostgreSQL COPY

转载 作者:行者123 更新时间:2023-11-29 13:48:26 24 4
gpt4 key购买 nike

我正在使用 travis-ci.org 来测试 Node.js 模块。它使用最新的pg访问 PostgreSQL 数据库的包。

集成测试需要使用 Postgres copy 命令(从事务中...而不是 psql 的 \copy)用一些 填充临时表CSV 数据。一切都在本地通过...但是在 Travis-CI 上运行我正在点击:

"COPY some_table(column_a,column_b) FROM 
'/home/travis/build/my_org/my_repo/test/fixtures/some_file.csv' CSV HEADER;"
{ error: could not open file
"/home/travis/build/my_org/my_repo/test/fixtures/some_file.csv" for reading:
Permission denied
at Connection.parseE
(/home/travis/build/my_org/my_repo/node_modules/pg/lib/connection.js:567:11)
at Connection.parseMessage name: 'error',
...

所以文件 Permission denied 就是这样。我的新手 Linux 技能告诉我该位置的文件存在。我试过 chmod 将其设置为 777,但没有任何效果。

我正在使用以下字符串连接到 Travis 上的 Postgres:

postgres://postgres:postgres@localhost:5432

一切都很好。一件事,我确实需要 PostgreSQL V9.6,所以我的 .travis.yml 文件看起来像:

language: node_js

node_js:
- "6"

services:
- postgresql

addons:
postgresql: "9.6"

sudo: false
dist: trusty

...过去效果很好,但这是我第一次不得不使用copy

我想这与 Postgres 以某种方式运行的任何用户有关?

非常感谢收到任何帮助!

蒂姆

最佳答案

当我处理使用旧 Travis 基础架构(基于 Ubuntu Precise)的继承代码库并想将其更新为 Trusty 时,我实际上遇到了这个问题。

基于 Precise 的图像从 travis 主目录读取文件没有问题 - 也许 PostgreSQL 服务器正在作为 travis 用户运行,而不是 postgres,但是在 Trusty 上,情况并非如此,我得到了这个错误。

对文件本身使用 chmod 是不够的,服务器仍然无法从 travis 主目录读取。因此,您可以使用 mktemp 创建一个文件,将您的文件复制到其中,然后使用 chmod 将这些权限更改为 666。现在您可以使用 PostgreSQLs COPY FROM 读取它。

关于node.js - "Permission denied"在 Travis-CI 中使用 PostgreSQL COPY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44597161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com