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を叩いたときにエラーになってしまう原因についてお話しいたしました。








ディスカッション
コメント一覧
まだ、コメントがありません