0

以前、EnterpriseDB インストーラーを使用して PostgreSQL 9.2 を Mac にインストールしました。.bash_profileそのため、私はを読むように修正しましたがexport PATH=/opt/local/lib/postgresql92/bin:$PATH、すべてがうまく機能していました。

その後、ハードドライブが破損し、コンピューターを再フォーマットして OSX を再インストールする必要がありました。最初に、Snow Leopard (私が持っていたリカバリ ディスクのバージョン) を再インストールし、次に (クラッシュする前に実行していた) Mountain Lion に再アップグレードする必要がありました。次に、Migration Assistant で Time Machine バックアップを使用して、ユーザー、アプリケーション、および「その他のファイル」を復元しました。

周りを見渡すと、すべてが墜落前の状態に戻っているように見えました。ただし、PostgreSQL 関連の操作を実行しようとすると、次のエラーが表示されます。

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

オンラインで調べてみると、システムの復元を実行したときに PostgreSQL サーバーが起動していなかったことが原因である可能性があることがわかりました。公式ドキュメントには、次のコマンドを使用するように書かれています。

$ postgres -D /usr/local/pgsql/data

しかし、私にはフォルダがありません/usr/local/pgsqldata私が見つけることができる唯一のディレクトリは/Library/PostgreSQL/9.2/data. postgresだから私はやることに切り替えてsudo su postgrespostgres -D /Library/PostgreSQL/9.2/dataもう一度やり直しました。

2013-08-18 11:38:09 SGT FATAL:  could not create shared memory segment: Invalid argument
2013-08-18 11:38:09 SGT DETAIL:  Failed system call was shmget(key=5432001, size=32374784, 03600).
2013-08-18 11:38:09 SGT HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMMAX.  To reduce the request size (currently 32374784 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.
    If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.
    The PostgreSQL documentation contains more information about shared memory configuration.

ここからどこへ行けばいいですか?この全体は少し奇妙です。最初に PostgreSQL をインストールしたときにサーバーを起動する必要があったことを覚えていません...

編集initdb -D /Library/PostgreSQL/9.2/data: dbクラスターが見つからない場合にも試しましたが、次のようになりました:

initdb: directory "/Library/PostgreSQL/9.2/data" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/Library/PostgreSQL/9.2/data" or run initdb
with an argument other than "/Library/PostgreSQL/9.2/data".

それで、システム上の他のほとんどのものと一緒に復元されて、まだそこにあるはずですよね?

4

1 に答える 1

0

カーネル パラメータを微調整する必要があります。カーネル リソースに関する関連ドキュメントは次のとおりです。システムの仕様 (メモリ) に従ってそれらを構成すると、うまくいくはずです。

脚注として、Postgresql 9.3 以降では、上記の調整は不要になることを追加したいと思います。

于 2013-08-18T07:39:28.093 に答える