データベース - postgreSQL - 消せないデータベースの回復 - 概要
- 1. 概要
1. 概要
きっかけは、馬鹿な話なのであります。
ちょっと実験であれこれさわっているうちに、変なデータベースを作成してしまったようなのです。
ある日、「pg_dumpall」しようとしたら・・・。
$ pg_dumpall --column-inserts --username=postgres> pg_dumpall.sql
"atabase name contains a newline or carriage return: "
いきなり、終わってしまったのだ。
出力した「pg_dumpall.sql」の中を見ても、「CREATE DATABASE」の後、「" WITH TEMPLATE = template0 OWNER = ユーザ名;」で終わっておる。
ふと思いついて、データベースの一覧を見てみたら
postgres=# \l
データベース一覧
名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権
-----------+----------+------------------+----------+-------------------+-----------------------
\r | ........ | UTF8 | C | C |
・・・ 略 ・・・
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | postgres=CTc/postgres+
| | | | | =c/postgres
testdb\r | ........ | UTF8 | C | C |
(12 行)
所有者名は、伏字にしましたが、データベース名に「\r」やら「testdb\r」やら、変な名前のものができておる。
記憶では、ちょっとした確認をしたときに、誤ったような気はする・・・。
あわくって、
drop database '\r';
とかやってみても
ERROR: syntax error at or near "'\r'"
行 1: drop database '\r';
^
とか言われてしまう。
馬鹿な話である、「\r」などの特殊記号をもったデータベースは、作成できても、これを削除することはできないようなのです。
まいったな。
というわけで、これは、この状況を元の状態に復旧する大冒険(いや、そんな大したことではない)の話なのです。
以下、次ページへ続く。
|
|