0

これは、データベースを作成するための私のシェル コマンドです。これは、デプロイ スクリプトの一部として実行され、人間の介入なしで 2 つのデータベースを自動的に作成します。

# POSTGRES
apt-get install -y postgresql
echo "CREATE ROLE deploy LOGIN ENCRYPTED PASSWORD '$APP_DB_PASS';" | sudo -u postgres psql
su postgres -c "createdb db1 --owner deploy"
su postgres -c "createdb db2 --owner deploy"
service postgresql reload

このコード内で、この段階で SQL ファイルのインポートを postgresql に統合する方法を誰か説明してください。

私はそれがこのようなものだと信じていますが、私はそれを機能させていません:

psql --username=postgres < /etc/schema.sql
4

1 に答える 1

0

Debian では、おそらく、Daniel のコメントに従う必要があります。これは、PostgreSQL がおそらく OS ユーザーが db ユーザーと同じユーザー名であることを要求するように構成されているためです。

だからあなたはする必要があります

su postgres -c "psql -f /etc/schema.sql"

または、これらすべてのデータベース作成コマンドを素敵な小さなシェル スクリプト ( su postgres -c 部分なし) に入れ、それを一度に実行することもできます。何かのようなもの:

 #!/bin/bash
 echo "CREATE ROLE deploy LOGIN ENCRYPTED PASSWORD '$APP_DB_PASS';" | su postgres -c psql
 createdb db1 --owner deploy
 createdb db2 --owner deploy
 psql db1 -f /etc/schema.sql
 psql db2 -f /etc/schema.sql

次に、それを sudo または su -c で実行し、認証に関して問題が発生する可能性があるものを簡素化できます。

于 2013-11-08T11:01:28.830 に答える