テスト用に動かしていて、一度作り直そうと思ってブラウザのコンソールから削除しようとしたら「不明なエラーが発生しました。」とだけ表示された。
エラーログを見たら
"ERROR: must be owner of database db_name"
と出ていたので、オーナー違うとのこと。
DB には接続できるのでDBの所有者を確認してみる。
SELECT d.datname as "Name",
pg_catalog.pg_get_userbyid(d.datdba) as "Owner"
FROM pg_catalog.pg_database d
DB名とともに何やら見慣れない cloudsqladmin さんと cloudsqlsuperuser さん、あと自分で作成したユーザーが出てきた。
誰やねんと思い、詳細を見てみる
SELECT * FROM pg_user;
あ、他にもユーザーいる。
- cloudsqladmin
- cloudsqlsuperuser
- cloudsqlagent
- cloudsqlreplica
調べてわかったこと
ブラウザ経由での DB 作成・削除は cloudsqlsuperuser として実行される。
最初の SQL で確認した template1 のオーナーは cloudsqlsuperuser だったので納得。
今回の件で言うと、 rails 経由で別ユーザーで作成してしまったため、ブラウザからは削除できなくなった。
直接 SQL でデータベース削除して解決。