ページ

2014年2月20日木曜日

postgres template1削除方法

今後のメモです。

postgresを利用する際に初期にtemplateを指定できます
こちらがtemplate1と呼ばれるDBが標準で適用されるのですがこちら通常の
フローではdropdb(DROP DATABASE template1)が利用できません
こちらを初期化し再構築する手順をまとめます。
$ psql -U postgres
postgres=# SELECT * FROM pg_database where datname = 'template1';
postgres=# UPDATE pg_database SET datistemplate = 'f' where datname = 'template1';
postgres=# SELECT * FROM pg_database where datname = 'template1';
postgres=# \q
$ dropdb template1
$ createdb -T template0 template1
$ psql -U postgres
postgres=# SELECT * FROM pg_database where datname = 'template1';
postgres=# UPDATE pg_database SET datistemplate = 't' where datname = 'template1';
postgres=# SELECT * FROM pg_database where datname = 'template1';

pg_databaseの中身を書き換えることで実現しています。
この方法が一番らくだと思いますのでメモです。