PostgreSQL

PostgreSQL ダブルクォートで括られたDB名は大文字と小文字が区別される. FATAL: database “” does not exist .

更新日:

pg_dumpコマンドを使って作られたdumpファイルをpg_restoreでリストアしようとしたところ、
DB名が無いと怒られた. dbnameという名前のDBは確かにあるはずなのに.

psql: FATAL: database “DBNAME” does not exist

理由は、dumpファイル内で、ダブルクォートで括られた”DB名”に対して操作をしようとしていたから.
“DBNAME”に対する操作は全て大文字の”DBNAME”に対する操作を表していて、
“dbname”と”DBNAME”は区別される。

CREATE DATABASE “DBNAME” OWNER = postgres TEMPLATE = template0 ENCODING = ‘UTF8’ LC_COLLATE = ‘C’ LC_CTYPE = ‘C’;

識別子を小文字で統一できるならそうした方が良い.
既に何かがあり出来ない状況で出くわしたなら、大文字と小文字を意識する必要がある.

以下PostgreSQLの公式ドキュメント.
PostgreSQLにおいて、識別子をダブルクォートで括ると、大文字小文字が区別されるようになる.
例えば、以下のようにCREATE DATABASEを叩くと、全て大文字の DBNAME というDBが作られる.

PostgreSQL 12.4文書/ 4.1.1. 識別子とキーワード

-PostgreSQL

Copyright© ikuty.com , 2024 AllRights Reserved Powered by AFFINGER4.