- ベストアンサー
JavaからMySQLへの接続方法とエラー解決
- JavaからMySQLへの接続方法とエラー解決について
- MySQLへの接続において発生するエラーメッセージの解決方法
- JDBCドライバのクラスパス設定に関する疑問への解答
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
文字化けに関しては、いつも悩まされるところですね。 原因はさまざまあるのですが、残念ながら私もまだ徹底的に追及していません。参考になるかもしれませんので、いくつかあげてみておきます。 ただしこれも新しいバージョンでないといけないかもしれません。 ・mysqlでのコマンドプロンプト操作 1.\hで ヘルプ一覧 2.\s ステイタス情報 3.\C utf8 キャラクタセットの変更(クライアント、接続) 4.show create database hellodb; 5.show create table テーブル名; 6.create database hellodb character set sjis; ・jdbc:mysql://localhost:3306/hellodb?useUnicode=true&characterEncoding=Shift_JIS のcharacterEncoding=Shift_JISの部分。 ・request.setCharacterEncodingg("Windows-31J"); ・データを入力したときの文字コード(ファイルからの場合等) ・mysqlのメニューの[Mysql Server Instance Configuration Wizard]で文字コードの変更。 -------------------------------------------------------------------------------- 以上のようなことをいろいろとチェックしながらうまくいく方法見つけてみてください。 可能なら、新しいバージョンでインストールし直すのも、いろいろ確認できるし、うまくいくかもしれません。
その他の回答 (2)
- auty
- ベストアンサー率58% (284/486)
調べてみたところ、MySQL 4.1以降、password()関数の返す長さが 20バイト から 41バイト に変換されているようです。 ひょっとすると今使ってるテーブルは、パスワードの長さが21バイトかもしれません。 その場合は、テーブルを作成しなおすか修正すればよいと思いますが、下記のページにかなり詳しく載っているので参考になるかと思います。
お礼
お調べいただき、大変恐縮です。 記載URLを参考にしてみましたが、password()関数の 変更のしかたがよくわからず、 下のほうで紹介されていた記事(MySQLとJDBCのバージョンが 合ってない)を参照して少し新しめのJDBC(mysql-connector-java-3.0.17-ga) をダウンロードしてみましたところ、接続が多分?うまくいきました。 ・・とここまではよかったのですが、 SQLの結果セットが文字化けしていました。 これもやはり、JDBCとバージョンが合っていないせいなのでしょうか。 少し新しめのJDBCをいくつか試しましたが、それぞれ違った エラーになります。JDBCの数が多すぎて、どれが良いのか??? です。。
- auty
- ベストアンサー率58% (284/486)
>>> (java.sql.SQLException: Communication failure during handshake. Is there a server running on localhost:3306?) のエラーメッセージが出ていますね。 ポート番号3306が使われているかをコマンドプロンプトで確認すると、使われている場合、 -------------------------------------------------------------------------------- >netstat -a -v | find "3306" TCP 0.0.0.0:3306 vista:0 LISTENING -------------------------------------------------------------------------------- のように、3306が見つかりますが使われていないときは何も出ません。 そこで、Mysqlのインストールディレクトリがわかれば、そのルートに my.ini が見つかると思うので、開くと -------------------------------------------------------------------------------- [client] port=3306 -------------------------------------------------------------------------------- のように、ポート番号がわかります。 -------------------------------------------------------------------------------- String url = "jdbc:mysql://localhost:ポート番号/hellodb?useUnicode=true&characterEncoding=SJIS"); -------------------------------------------------------------------------------- のように直してみてください。
お礼
とても丁寧なご回答ありがとうございます。 netstat -a -v | find "3306" と打ちますと、 ご指摘のような応答メッセージが出てきます。(LISTENING) my.ini にはport=3306とあり、 String url = "jdbc:mysql://localhost:3306/hellodb?useUnicode=true&characterEncoding=SJIS"; と直してみましたが同じエラーが返ってきます。 ポート番号を変えると良いのでしょうか? 恥ずかしながら、どのポート番号を使えばよいかもわかりません。 (この場合、my.iniで書き換えるのでしょうか。) 恐縮ですが、またご指摘いただけると助かります。。 よろしくお願いいたします!
お礼
autyさん、何度も気にかけていただきありがとうございます。 検索もしていろいろ試してみましたが、結局うまくいきません でした。 今回、MySQLには初めて触れたのですがJavaから接続するという 作業を通して、接続とはこんな風にやるのか、MySQLとはこんな 形になっているのか、と漠然とした形ですが理解することが できました。 まだ勉強の途中、形だけわかっただけでも進歩なので、 このまま先に進めようと思います。(現在使用している本が、 あまり細かく説明されたものではないので・・) どこかで不備があって、きっとそのうち解決法が見つかると思います。 バージョンの不相性も関係しているでしょうし。 せっかく接続できたのに文字化けかよ、という心残りは ありますが。。(笑) 何度も丁寧な説明をしていただき、どうもありがとうございました。 また質問して、見かけることがありましたらまた助けて いただけると幸甚です。