- - PR -
jdbc+postgresql 「コネクションが取得できない」
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-06-14 01:29
自宅サーバ内にて、javaでpostgresqlへの接続を試してみたのですが、
connectionが取得できず困っています。 Redhat9 java 1.4.2_03 postgresql 7.3 classpathに JAVA_HOMEと、 pg73b1jdbc1.jar pg73b1jdbc2.jar pg73b1jdbc3.jar が追加されている jdbcでPostgreSQLにアクセスするjavaサンプルプログラムを、 サーバ内に配置して実行すると、 下記のエラーが発生します。 Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. at org.postgresql.jdbc1.AbstractJdbc1Connection.openConnection(AbstractJdbc1Connection.java:161) at org.postgresql.Driver.connect(Driver.java:120) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at HelloWorldJDBCPostgreSQL.main(HelloWorldJDBCPostgreSQL.java:24) javaのソースコード内でconnectionの取得は、下記のように行っています。 Connection con = DriverManager.getConnection("jdbc:postgresql:DB_NAME", "postgres", ""); 上記のように行うと、 URL:localhost Port:5432 とデフォルトの設定が適用されると思いました。 エラーの内容からして、URLとPortの指定方法が問題かと思うのですが、 原因がわかりません。 プログラムはPostgreSQLがインストールされているのと同じサーバ内に設置しているので、 localhost、5432で問題ないかと思いました。 一応、URLの指定をIPアドレス、ポートを5432で明示的に指定し、ルータの設定で[IPアドレス][Port:5432]を サーバのアドレスにフォワードするように設定したり、といろいろ試してみたのですが、 全て同じエラーが出力されました。 参考にしたサイトが、PostgreSQL 7.1 を対象にしており、 /usr/share/pgsql/jdbc7.1-1.2.jar をClasspathに追加するように書いてあったのですが、7.3に上記のjarがなかったため、 pg73b1jdbc1.jar pg73b1jdbc2.jar pg73b1jdbc3.jar の3つ全てをClasspathに追加する、という対応をとりました。 |
|
投稿日時: 2004-06-14 02:42
サーバのファイアウォール設定とかは問題ないですか。
以前、こんな感じのことで引っ掛かった気がしたのですが。 |
|
投稿日時: 2004-06-14 15:24
という事は、postmaster が 5432 番ポートを listen している筈ですよね。
してますか ? |
|
投稿日時: 2004-06-14 21:29
JDBCドライバは、
JDBCはpostgresqlのソースからコンパイルできます。 src/interfaces/jdbcディレクトリ以下に入っています。 postgresql.jarが作成されます。 また、TCP/IPにて通信する場合、pg_hba.confに クライアントを設定する必要がありますが、行っていますか? |
|
投稿日時: 2004-06-14 22:23
どーも。
私も以前に同じ例外でつまづいた事があったので、参考までに。 postgresql.confでTCP/IP経由でのアクセスが禁止されていませんか? 同ファイルのtcpip_socketの値を確認してみてください。 |
|
投稿日時: 2004-06-15 00:41
返信どうもありがとうございますっ!
とりあえず今、telnetで5432にアクセスしてみたところ、 # telnet localhost 5432 Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused とエラーになりました。 PostgreSQLの起動方法は Webmin により行っており、 とくにオプションをしていするような欄はみあたりませんでした。 この起動方法では外部からのアクセスを許可しないような起動方法に なっているかもしれません。 とりあえずこれからまたアドバイスをもとにいろいろ試してみます。 経過を報告します。 とりいそぎ失礼します。 |
|
投稿日時: 2004-06-16 12:06
エラーの内容とかバージョンは違うのですが。。。
サーバ: ・RedHat9 ・PostgreSQL 7.4.2 クライアント: ・WindowsXP ・J2SE 1.4.2_04 で接続して、接続できない状態でした。 fofofoさんのご回答を参考にpostgresql.confを見たとこと、"tcpip_socket"の近くにある"port=5432"というエントリがコメントアウトされていた為、これをアンコメントすると、つながるようになりました。 ご参考まで。 |
|
投稿日時: 2004-06-16 12:37
接続できない原因はいくつかあるでしょうけど、
PostgreSQL側の設定については、次のページが参考になるでしょう。 PostgreSQL日本語ドキュメント http://www.postgresql.jp/document/ 16.4. 実行時の設定 http://www.postgresql.jp/document/pg742doc/html/runtime-config.html postmaster http://www.postgresql.jp/document/pg742doc/html/app-postmaster.html PostgreSQL(ポストグレス・キュー・エル)についてよくある質問とその解答(FAQ) 3.5) 他のホストからの接続はどのように制御しますか? http://www.postgresql.org/docs/faqs/FAQ_japanese.html#3.5 あと、この@ITの記事や会議室で「PostgreSQL」を検索みてもよいでしょう。 PostgreSQLに関する記事や投稿はたくさんあります。 [ メッセージ編集済み 編集者: ちいにぃ 編集日時 2004-06-16 12:47 ] |
