質問: 0)): ERROR: could not access status of transaction 0 DETAIL: Could not write to file “pg_subtrans/0001” at offset 245760: No space left on device. ``` ### したいこと 容量を増やすために、データ保存場所を移そうと試みています。(元々保存するように大きな容量を取った箇所があります) その時にinitdbコマンドを行う必要があると聞きました。 しかし、initdbを間違えてvimで開いて文字を書き込んでしまったらしく、実行できなくなりました。 wgetなどでもう一度、postgresをソースコードで再インストールして 現在の設定を引き継ぎ、initdbコマンドファイルを元に戻すことはできますか? 難しいなら、他にはどうすればいいでしょうか。 周りに経験者がいないので困っています。 是非助言をお願いします。 ### 補足情報(言語/FW/ツール等のバージョンなど) postgresql 9.2.19 OS:Cent 6.5
回答: wgetで同じバージョンを取り込み... make installすればinitdbは新しくなります。 行う前にinitdbをリネイムしておくと、違いが分かると思います。 以下ご参考です pg_dumpall > mydb_dumpall.sql pg_ctl -D /usr/local/pgsql/data stop initdb --encoding=UTF8 --no-locale --pgdata=/usr/local/pgsql/data2 pg_ctl -D /usr/local/pgsql/data2 -l /tmp/pg_logfile start psql -f mydb_dump.sql 同じ環境でコンパイルしてみました Cent6.5 wget https://ftp.postgresql.org/pub/source/v9.2.19/postgresql-9.2.19.tar.gz rm -rf postgresql-9.2.19 tar xvfz postgresql-9.2.19.tar.gz cd postgresql-9.2.19 ./configure --prefix=/usr/local/pgsql make sudo make install しかしながら make: *** No rule to make targetのエラーがでませんでした。 ちなみにgccは、version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)を使いました。