Mengapa saya mendapatkan kesalahan izin PostgreSQL saat menentukan tablespace dalam perintah "create database"?

11

Ketika saya membuat database di PostgreSQL tanpa secara eksplisit menentukan tablespace default, database dibuat tanpa masalah (saya login sebagai pengguna pgsys ):

postgres => buat database rich1;
BUAT DATABASE
postgres => \ l +
                                                                            Daftar basis data
   Nama | Pemilik | Pengkodean | Collation | Ctype | Akses hak istimewa | Ukuran | Tablespace | Deskripsi
----------- + ---------- + ---------- + ------------- + - ----------- + ------------------------------------- + ----------- + ------------ + ------------------------- -------------------
 postgres | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 7455 kB | pg_default | basis data koneksi administrasi standar
 rdsadmin | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin = CTc / rdsadmin | Tidak Ada Akses | pg_default |
 rich1 | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 7233 kB | pg_default |
 template0 | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | = c / rdsadmin | 7345 kB | pg_default | database kosong yang tidak dapat dimodifikasi
                                                             : rdsadmin = CTc / rdsadmin
 template1 | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | = c / pgsys | 7345 kB | pg_default | template default untuk database baru
                                                             : pgsys = CTc / pgsys
(5 baris)

Seperti yang Anda lihat, database dimasukkan ke dalam tablespace pg_default, tetapi jika saya menentukan tablespace default di klausa tablespace (juga masih login sebagai pgsys ) saya mendapatkan kesalahan izin:

postgres => buat database rich2 tablespace pg_default;
GALAT: izin ditolak untuk tablespace pg_default

Berikut izin untuk pengguna itu:

postgres => \ du pgsys
               Daftar peran
 Nama peran | Atribut | Anggota dari
----------- + ------------- + -----------------
 pgsys | Buat peran | {rds_superuser}
           : Buat DB

Ini adalah kesalahan PostgreSQL, tetapi saya harus menyebutkan bahwa ini adalah AWS Aurora yang dapat membuat perbedaan.

HuggieRich
sumber

Jawaban:

8

Inilah triknya, setidaknya dengan pgAdmin v4: Biarkan tablespace kosong. Ini akan default ke "pg_default" saat membuat database.

Logan
sumber
1
yang bekerja, thanx
Alex Buzunov
1
menyelamatkan hidupku - terima kasih! @HuggieRich harus menerimanya!
Ron