[+/-]
MySQL AB はアップデートの手順を可能な限り簡潔に保つよう努力しておりますが、どのソフトウェアでもあるように、新しい機能のサポート、現存の機能の改良、または新たな基準の実施などのために、新しいバージョンでは変更があることもあります。
このセクションでは、ユーザが Connector/J のバージョンをアップグレードする( または JDBC 機能に関連して、MySQL サーバを新バージョンにアップグレードする ) 際の注意を記述します。
Connector/J 3.1 は、Connector/J 3.0 にできるだけ後方互換性を持つよう設計されています。主な変更は MySQL-4.1 以降 の新しい機能に特定されており、Unicode 文字セット、サーバ側プリペアド ステートメント、エラー メッセージでサーバによって戻される SQLState 、構成プロパティを介して有効または無効にできる様々な性能強化、などがその対象です。
Unicode 文字セット
— この MySQL
の新機能については、次のセクション、および
章 9. キャラクタセットサポート
をご参照ください。構成ができない場合は通常、
Illegal mix of collations
に似たメッセージでエラーが表示されます。
サーバ側プリペアド ステートメント — Connector/J 3.1 は、サーバ側プリペアド ステートメントが利用可能な場合、それらを自動的に検出して使用します ( MySQL サーバ バージョン 4.1.0 以降 ) 。
バージョン 3.1.7
からは、Connection.prepareStatement()
のすべての変形を介して準備している SQL
をドライバがスキャンし、サーバ側での準備がサポートされているタイプのステートメントかを判断します。そして、サーバでサポートされていない場合は、クライアント側のエミュレートされるプリペアド
ステートメントとして準備されます。この機能は、emulateUnsupportedPstmts=false
を JDBC URL
で渡すことで無効にすることができます。
アプリケーションとサーバ側プリペアド ステートメントとの間に問題がある場合、接続プロパティ useServerPrepStmts=false で、4.1.0 より前の MySQL サーバでまだ使用されている旧式のクライアント側のエミュレートされたプリペアド ステートメント コードに戻すこともできます。
Datetimes
すべてゼロのコンポーネント
(0000-00-00 ...
) —
それらの値は、Java
では確実に表示されません。Connector/J 3.0.x
は ResultSet
から読み取る時はいつもそれらを NULL
に変換します。
Connector/J 3.1 は、これらの値が JDBC と SQL の標準に沿う最も適切な動作として検出される場合に、デフォルトとして例外を投入します。この動作は zeroDateTimeBehavior 構成プロパティを使用して変更することができます。許容値は以下 :
exception
( デフォルト ) -
SQLState の S1009
で SQLException
を投入。
convertToNull
-
>データの代わりに NULL
を戻す。
round
-
データを、0001-01-01
という最も近い整数に丸める。
Connector/J 3.1.7
からは、noDatetimeStringSync=true
( デフォルト値は false
)
を介して ResultSet.getString()
をこの動作から切り離すことができ、それによって未修正のすべてゼロの値を
String
として取り出すことができます。また、これはどんなタイムゾーン変換の使用も除外し、そのためドライバは
noDatetimeStringSync と
useTimezone
を同時に有効にすることを拒否しますのでご注意ください。
新しい SQLState コード — Connector/J 3.1 は、MySQL サーバ ( サポートされている場合 ) によって戻された SQL:1999 SQLState コードを使用します。これは Connector/J 3.0 が使用する旧式の X/Open ステート コードとは異なります。MySQL-4.1.0 より前の MySQL サーバに接続している場合 ( 最も古いバージョンは、SQLState をエラーコードの一部として戻します ) 、ドライバは設定済みのマッピングを使用します。構成プロパティ useSqlStateCodes=false を使うと、以前のマッピングに戻すことが可能です。
ResultSet.getString()
— ResultSet.getString()
を BLOB
カラムで呼び出すと、BLOB の String
表現ではなく、byte[]
アレイのアドレスが戻るようになりました。BLOB
は文字セットを持たないため、データの紛失や破損の心配なく
java.lang.Strings に変換することができます。
ストリングを LOB 動作で MySQL に保存するには、ドライバが java.sql.Clob として扱う TEXT タイプのひとつを使用します。
デバッグ ビルド
— Connector/J 3.1.8
からは、mysql-connector-java-
と名付けられたファイルのドライバのデバッグ
ビルドは、[version]
bin-g.jarmysql-connector-java-
という名の通常バイナリの jar
ファイルに沿って出荷されます。
[version]
-bin.jar
Connector/J 3.1.9 からは、.class ファイルを細分化された状態では出荷しなくなり、それらはドライバと出荷する JAR アーカイブでのみ利用できます。
ドライバのデバッグ
ビルドは実稼動環境で実行するようには設計されておらず、使用するとパフォーマンスに悪影響が出るため、問題やバグを
MySQL AB
に報告する際に指示されない限り使用しないでください。また、デバッグ
バイナリは、Connector/J 配布物に添付された
src/lib/aspectjrt.jar
ファイルにある、Aspect/J ランタイム
ライブラリに依存します。
UTF-8 文字エンコードの使用 - MySQL サーバ 4. 1 より古いバージョンでは、UTF-8 文字エンコードはサーバではサポートされていませんでしたが、JDBC ドライバでは使用が可能で、サーバの latin1 テーブルに複数の文字セットを保存することができました。
MySQL-4.1 からは、この機能は廃止になります。アプリケーションがこの機能を利用しており、MySQL サーバ 4.1 以降での公式の Unicode 文字サポートを使用することができない場合は、次のプロパティを接続 URL に加えてください :
useOldUTF8Behavior=true
サーバ側プリペアド ステートメント - Connector/J 3.1 は、サーバ側プリペアド ステートメントが利用可能な場合、それらを自動的に検出して使用します ( MySQL サーバ バージョン 4.1.0 以降 ) 。アプリケーションとサーバ側プリペアド ステートメントとの間に問題がある場合、次の接続プロパティで、4.1.0 より前の MySQL サーバでまだ使用されている旧式のクライアント側のエミュレートされたプリペアド ステートメント コードに戻すこともできます :
useServerPrepStmts=false