PostgreSQLでCREATE USER IF NOT EXISTS時にsyntax error at or near “NOT”
今回はPostgreSQLで次のようなSQLを叩いたときに次のエラーになってしまう原因についてお話ししていきます。
1 |
CREATE USER IF NOT EXISTS postgres; |
1 2 3 |
psql:/sh/sql/sample.sql:2: ERROR: syntax error at or near "NOT" LINE 1: CREATE USER IF NOT EXISTS postgres; ^ |
PostgreSQLのバージョンは14系です。
PostgreSQLでCREATE USER IF NOT EXISTS時にsyntax error at or near “NOT"
結論から言うと、PostgreSQLのREATE USERは「IF NOT EXISTS」がサポートされていません。
つまり、PostgreSQLはユーザー作成において「IF NOT EXISTS」が使えないです。
よって、次のようなIF文を書くしかありません。
1 2 3 4 5 6 7 8 9 10 11 12 |
DO $$ BEGIN IF EXISTS ( SELECT FROM pg_user WHERE usename = 'postgres' ) THEN RAISE NOTICE 'User "postgres" already exists. Skipping.'; ELSE CREATE USER postgres; END IF; END $$ |
少し手間がかかりますね。
終わりに
今回はPostgreSQLで冒頭のSQLを叩いたときにエラーになってしまう原因についてお話しいたしました。
ディスカッション
コメント一覧
まだ、コメントがありません