データソース接続に失敗する場合・データベースの問題の確認点(MySQL)

ColdFusionのデータソース設定を登録する際にエラーが発生する場合の対処方法について、MySQLに関するものを別途まとめました。

  • MySQL(DataDirect)を選択してデータソースを登録した際、[Macromedia][MySQL JDBC Driver]Connections to MySQL Community Server are not supported.エラーが発生する
    • MySQL(DataDirect)は、商用版のMySQLの接続のみサポートします。無償のMySQL Community Serverには接続することができません。
       
  • MySQLを選択してデータソースを登録しようとした際、「スタンドアローン MySQL JDBC ドライバーは ColdFusion に付属しなくなりました。」エラーが発生する
    • ColdFusionには、MySQLのJDBCドライバは、上記のMySQL(DataDirect)のみ同梱されています。無償のMySQL Community Serverに接続するためには、別途、データベースベンダーやサードパーティが提供するJDBCドライバを入手し、そのドライバーを[cf_root]/{インスタンス(cfusion等)/lib 内に配置してください。配置後はColdFusion を再起動してください。
       
  • データソース登録時に、「Driverjava.sql.SQLException: null」エラーが発生する
    • The root cause was that: java.sql.SQLExceptionと表示されますが、処理等を行うと、「The server time zoneの値に関するエラー」が表示されます。
    • 一部の MySQLのJDBCドライバ(5.1.33~37や8.0.22)で確認され、対応としてデータソースの[詳細設定]の「接続文字列」に『serverTimezone=JST』を追加します(既に別のパラメーターが指定されている場合は&で区切ります)
  • データソース登録時に、「com.mysql.cj.jdbc.exceptions.CommunicationsException」エラーが発生する
    • メッセージに「Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.」と表示されるように、一部のMySQLのJDBCドライバでサーバーからデータを受け取れない場合は、対応としてデータソースの[詳細設定]の「接続文字列」に『enabledTLSProtocols=TLSv1.2』を追加します(既に別のパラメーターが指定されている場合は&で区切ります)
    • (参考:一般ユーザーサイト)JDBC経由でMySQLに突然接続できなくなった
    • (参考:ColdFusion 2021 Update 2ページ)ColdFusion(2021 リリース)アップデート 2
      • 【抜粋】Oracle JRE 上で稼働する AWS MySQL の場合、MySQL データベースへの接続が
        失敗します。接続を確認した後、エラーメッセージが表示されます。この問題が
        発生するのは、MySQL の JDBC ドライバーが SSL over TLS で接続できないから
        です。MySQL 5.7.35 の時点では、TLSv1 および TLSv1.1 接続プロトコルは非推奨
        になっています。回避策として、JDBC URL にパラメーター enabledTLSProtocols
        を追加します。
         
  • データの書き込み時に????になってしまう
    • 一部の MySQLのJDBCドライバ(8.0.23 他)で確認され、対応としては、データソースの[詳細設定]の「接続文字列」に『characterEncoding=UTF-8&connectionCollation=utf8mb4_general_ci』を追加します(既に別のパラメーターが指定されている場合は&で区切ります)
  • datetime型のデータを取得して表示すると、日付時刻データではなく、java.time.LocalDateTimeオブジェクトを表示する
    • 一部の MySQLのJDBCドライバ(8.0.23 以降)で確認されています。8.0.23以降の日付形式データの取得方法が変更されたことが影響しています。
    • ColdFusion 2021、2018は、下記のCF-4211276のリンク先の「Comments」下部からパッチをダウンロードしてください。
      https://tracker.adobe.com/#/view/CF-4211276
      • ColdFusion 2023の場合
        1. 個別パッチの適用は不要ですが、JVM引数を追加する必要があります。
        2. ColdFusion Administratorにログインし、「サーバーの設定 > JavaとJVM」の『JVM引数』に下記を追加します
          • -Dcoldfusion.jdbc.mysql.datetime.str=true(※ 他の引数との項目をスペースで区切り、改行などは入れないようにしてください)
        3. ColdFusion 2023を再起動します
           
      • ColdFusion 2021の場合
        1. 上記のCF-4211276のリンク先の「Comments」下部のURLからhf202100-4211276.jarをダウンロードします
        2. ダウンロードしたhf202100-4211276.jarを[cf2021_root]/{インスタンス(cfusion等)/lib/updates フォルダ内に配置します(同じフォルダに置かれている他のファイルは触らないでください)
        3. ColdFusion Administratorにログインし、「サーバーの設定 > JavaとJVM」の『JVM引数』に下記を追加します
          • -Dcoldfusion.jdbc.mysql.J823=true(※ 他の引数との項目をスペースで区切り、改行などは入れないようにしてください)
        4. ColdFusion 2021を再起動します
           
      • ColdFusion 2018の場合
        1. 上記のCF-4211276のリンク先の「Comments」下部のURLからhf201800-4211276.jarをダウンロードします
        2. ダウンロードしたhf201800-4211276.jarを[cf2018_root]/{インスタンス(cfusion等)/lib/updates フォルダ内に配置します(同じフォルダに置かれている他のファイルは触らないでください)
        3. ColdFusion Administratorにログインし、「サーバーの設定 > JavaとJVM」の『JVM引数』に下記を追加します
          • -Dcoldfusion.jdbc.mysql.datetime.str=true(※ 他の引数との項目をスペースで区切り、改行などは入れないようにしてください)
        4. ColdFusion 2018を再起動します

          【個別パッチの注意点】
          • lib/updatesフォルダに配置した hf202100-4211276.jar、hf201800-4211276.jarは、ColdFusionのUpdateを適用した際に、自動的にhf-20XX-000XX-XXXXXX\backup\lib\updatesフォルダに移動され、Update適用後はパッチが外れてしまいます。
            • (例)backupフォルダの場所:C:\ColdFusion2021\cfusion\hf-updates\hf-2021-00003-329779\backup\lib\updates
          • 適用したUpdateに、CF-42112763の修正も含まれていればそのままで問題ありませんが、修正が含まれていない場合は、hf202100-4211276.jarまたはhf201800-4211276.jarを元のlib/updatesの場所に戻してください。
          • (注意)backupフォルバックアップされた場所にある chf20xx000x.jarは古いUpdateのコアファイルです。このファイルは元の場所に戻さないでください(誤って元の場所に戻してしまうとUpdateが一致しなくなり誤動作の原因となります)。


 


記事公開日:2022年11月14日
最終更新日:2023年07月13日


x

Sample Modal Window

This is just a sample…

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent suscipit iaculis libero sed tristique. Quisque mollis dolor non tellus placerat vitae sodales lectus porta. Curabitur ut suscipit tellus. Maecenas rhoncus, ante vitae vehicula vestibulum, metus sapien dapibus tellus, et mattis dolor neque vitae nisl. Nullam eleifend ultrices ipsum eget pretium. Curabitur semper metus ut ante adipiscing nec volutpat sem rutrum. Nullam a nisi lacus, non interdum ante. Vivamus ante augue, commodo vel egestas sed, pharetra nec dui. Quisque sed tellus felis. Donec ipsum mauris, sagittis eu accumsan in, aliquam non ipsum.

Vestibulum tempor nunc nec felis scelerisque eget elementum erat dignissim. Ut vel ipsum mollis orci venenatis luctus. Aenean vehicula quam vel quam porttitor ac iaculis elit pulvinar. Proin consequat, ipsum eu venenatis semper, justo turpis posuere tortor, ac placerat metus nisl et lectus. Nulla cursus dui id nunc ullamcorper sed semper nisl lobortis. Aliquam erat volutpat. Phasellus arcu ante, imperdiet in ornare sed, laoreet eu massa.