6

これが私の問題です:

myname@ubuntu:~$ sudo su postgres -c "psql template1"
Password: 
psql (9.1.6)
Type "help" for help.

template1=# \i /create.sql
/create.sql: Permission denied

ファイルがデスクトップ上にある場合でも、この問題が発生します。create.sqlのテキストをコピーしてそこに貼り付けると、機能します。

UBUNTU 12.10、postgresql9.1を使用

お手伝いありがとう。

4

2 に答える 2

12

Windowsで作業している場合は、パス全体を一重引用符で囲んで渡す必要があります。

test-# \i 'D:\\person.sql' --- > note here double backslash not single
于 2020-08-08T11:11:23.463 に答える
6

問題は、ユーザーとして起動psqlし、SQLファイルを読み取るためpostgresのユーザー権限を付与していないことです。postgres許可を与える必要があります。最も簡単な方法は、世界の読み取り権限を付与することです。

chmod a+r create.sql

;を変更することで、ファイルに割り当てられているデフォルトのアクセス許可を変更できますumask。詳細情報を検索してください。一部のプログラムは、とにかく煩わしく無視してumask制限付きファイルのアクセス許可を設定するため、アクセス許可を付与する方法を常に知っておく必要があります。man chmodおよびを参照してくださいman chown

psqlところで、ユーザーとして起動するために非常に複雑な方法を使用していpostgresます。これでうまくいきます:

sudo -u postgres psql template1

ファイルシステムのルートで/create.sql指定されたファイルを指定することに注意してください( )。これがあなたの意図したことではないかと思います。create.sql/

/次のように、ホームディレクトリにある場合は、相対パス(先頭なし)として指定することをお勧めします。

template1=# \i create.sql

または、デスクトップ上にありpsql、ホームディレクトリから開始した場合:

template1=# \i Desktop/create.sql
于 2012-12-03T12:07:44.753 に答える