Quando creo un database in PostgreSQL senza specificare esplicitamente un tablespace predefinito, il database viene creato senza problemi (ho effettuato l'accesso come utente pgsys ):
postgres => crea database rich1; CREA DATABASE postgres => \ l + Elenco di database Nome | Proprietario | Codifica | Collazione | Ctype | Privilegi di accesso | Dimensione | Tablespace | Descrizione ----------- + ---------- + ---------- + ------------- + - ----------- + ------------------------------------- + ----------- + ------------ + ------------------------- ------------------- Postgres | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | | 7455 kB | pg_default | database delle connessioni amministrative predefinito rdsadmin | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin = CTc / rdsadmin | Nessun accesso | 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 vuoto non modificabile : rdsadmin = CTc / rdsadmin template1 | pgsys | UTF8 | en_US.UTF-8 | en_US.UTF-8 | = c / pgsys | 7345 kB | pg_default | modello predefinito per nuovi database : pgsys = CTc / pgsys (5 file)
Come puoi vedere, il database viene inserito nel tablespace pg_default, ma se specifico il tablespace predefinito nella clausola tablespace (anch'esso ancora registrato come pgsys ) ottengo un errore di autorizzazione:
postgres => crea database rich2 tablespace pg_default; ERRORE: autorizzazione negata per tablespace pg_default
Ecco le autorizzazioni per quell'utente:
postgres => \ du pgsys Elenco dei ruoli Nome del ruolo | Attributi | Membro di ----------- + ------------- + ----------------- pgsys | Crea ruolo | {} Rds_superuser : Crea DB
Questo è un errore PostgreSQL, ma dovrei menzionare che si tratta di un'istanza di AWS Aurora nel caso in cui ciò faccia la differenza.