"Permission denied" 在 Travis 中使用 PostgreSQL COPY-CI
"Permission denied" using PostgreSQL COPY in Travis-CI
我正在使用 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
.
阅读它
我正在使用 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
.