JavaアプリからローカルMySQLデータベースにアクセスできない問題の原因と対策

アイキャッチ

Javaプログラミング学習中にぶち当たった問題を備忘録に残します。
まずは今回の現象説明から。

問題の詳細状況

【やりたかったこと】

Javaで作成したWEBアプリケーションから、ローカル環境に立てたMySQLデータベースサーバへアクセスして、ブラウザにデータベースの内容を表示する。

【不具合現象】

ブラウザには下記のメッセージが表示されて、正しくデータベースにアクセスできない。

Cannot create PoolableConnectionFactory (The server time zone value ‘ÂÂÂÂ (ÂWÂÂÂÂ)’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.)(原文ママ)

ちなみに上記の内容を日本語訳してみるとこんな意味になります。(誤訳があったらコメント下さい。)

「PoolableConnectionFactoryを作成できません。(サーバータイムゾーンの値 ‘<ここは文字化け>’が認識されていないか、複数のタイムゾーンを表しています。 タイムゾーンのサポートを利用する場合は、 より具体的なタイムゾーン値を使用するために、サーバーまたは JDBCドライバ(serverTimezone構成プロパティを介して) を設定する必要があります。 )」

【かんたんな実行環境】

  • JavaアプリケーションはEclipseで作成して、Eclipse上のTomcat6.0サーバで実行
  • DB(データベース)はXAMPPで作成して、XAMPP上でApacheとMySQLを実行

原因と対策

結論からいうと、MySQL公式JDBCである「MySQL Connector/J」の特定のバーションに含まれる不具合が原因のようです。
はじめに使用しエラーが出ていたのは「MySQL Connector/J 8.0.15」です。旧バージョンの「MySQL Connector/J 5.1.47」に差し替えてみたら不具合は解消しました。 他にも同様の対策で問題解消したことを報告するブログが僅かにありました。
MySQLデータベースにうまくアクセスできない方は、まずは「MySQL Connector/J」の旧バージョン試してみましょう。 コードを全部見直すよりは、圧倒的にカンタンです。

MySQL Connector/Jの旧バージョンをダウンロードする方法

「MySQL Connector/J」公式サイトのダウンロードページのダウンロードフォーム右上にある、最新バージョンと旧バージョンを切り替えるリンクをクリックして旧バージョンをダウンロードします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA