Skip to content

Commit 84385cb

Browse files
authored
Exists check for database and user
- Added exists check for database and user - Added `--dbname "postgres"` in `psql` command - Added owner, utf8 encoding, collate and template
1 parent ac7f26d commit 84385cb

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

create-multiple-postgresql-databases.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ set -u
66
function create_user_and_database() {
77
local database=$1
88
echo " Creating user and database '$database'"
9-
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
10-
CREATE USER $database;
11-
CREATE DATABASE $database;
9+
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "postgres" <<-EOSQL
10+
SELECT 'CREATE USER ' || LOWER(TRIM('$database')) AS create_user_query WHERE NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = LOWER(TRIM('$database')));\gexec
11+
SELECT 'CREATE DATABASE ' || LOWER(TRIM('$database')) || ' WITH OWNER "$POSTGRES_USER" ENCODING "UTF8" LC_COLLATE = "en_US.UTF-8" LC_CTYPE = "en_US.UTF-8" TEMPLATE="template0"' AS create_table_query WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = LOWER(TRIM('$database')));\gexec
1212
GRANT ALL PRIVILEGES ON DATABASE $database TO $database;
1313
EOSQL
1414
}

0 commit comments

Comments
 (0)