Psycopg2でサーバーに接続できない
Psycopg2を使っていて、multiprocessingでデータベースに接続してデータを入れる処理を書こうとしていたんだが、↓のエラーで躓いた。
could not connect to server: Connection refused Is the server running on host "localhost" and accepting TCP/IP connections on port 5432?
netstat -an| grep 5432
で確認しても
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
とあって、動いてるように見える。
postgresql.confの設定も
listen_address = 'localhost' port = 5432
となっていることを確認した。
それでも繋がらない。
結論を言うと、
con = psycopg2.connect(database=db, user=user, password=passwd)
のように書く必要がある。修正前は
con = psycopg2.connect(database=db, host='localhost', user=user, password=passwd)
としていた。
hostを設定していたとき、ログやpsなどで見ていると5432以外のportでのアクセスがあった。きっとこれがダメなんだろうとあたりをつけて何とかTCP/IPではなくUnixドメインでアクセスできないかと探していると、psycopg2では、hostの設定を省くとUnixドメインでのアクセスになるというので試してみたらうまくつながった。