Win-2003ボックスでinformix11.5を実行していて、いくつかのデータベースを実行しています。
システムデータベースにはロケールen_us.819があります
カスタムデータベースのロケールはen_us.57372(UTF8)です。
これらのカスタムデータベース用に設定されたデータソースがほとんどないJBoss4.0.2にデプロイされたアプリケーションもあります。
<local-tx-datasource>
<jndi-name>InformixDS</jndi-name>
<connection-url>jdbc:informix-sqli://@database.server@:@database.port@/tcs_catalog:[email protected]@</connection-url>
<driver-class>com.informix.jdbc.IfxDriver</driver-class>
<user-name>@database.username@</user-name>
<password>@database.password@</password>
<new-connection-sql>set lock mode to wait 5</new-connection-sql>
<check-valid-connection-sql>select '1' from dual</check-valid-connection-sql>
<metadata>
<type-mapping>InformixDB</type-mapping>
</metadata>
管理者としてログインしていますが、JBossを起動すると次のエラーが表示されます
Caused by: Java.sql.SQLException: Database locale information mismatch.
at com.informix.util.IfxErrMsg.getSQLException(IfxErrMsg.Java:373)
at com.informix.jdbc.IfxSqli.a(IfxSqli.Java:3208)
at com.informix.jdbc.IfxSqli.E(IfxSqli.Java:3518)
at com.informix.jdbc.IfxSqli.dispatchMsg(IfxSqli.Java:2353)
at com.informix.jdbc.IfxSqli.receiveMessage(IfxSqli.Java:2269)
at com.informix.jdbc.IfxSqli.executeOpenDatabase(IfxSqli.Java:1786)
at com.informix.jdbc.IfxSqliConnect.<init>(IfxSqliConnect.Java:1327)
at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at Sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.Java:39)
at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.Java:27)
at Java.lang.reflect.Constructor.newInstance(Constructor.Java:501)
at com.informix.jdbc.IfxDriver.connect(IfxDriver.Java:254)
at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManagedConnectionFactory.Java:151)
... 160 more
Caused by: Java.sql.SQLException
at com.informix.util.IfxErrMsg.getSQLException(IfxErrMsg.Java:373)
at com.informix.jdbc.IfxSqli.E(IfxSqli.Java:3523)
... 170 more
管理者の場合、DB_LOCALEとCLIENT_LOCALEはen_us.utf8に設定されます。
Server Studio DB_LOCALEとCLIENT_LOCALEをen_us.utf8に設定すると、データベースに接続できます。
これを回避するには、DB_LOCALEとCLIENT_LOCALEをどこに設定する必要がありますかデータベースロケール情報の不一致エラー?
ありがとう。
コメントによると、Guy Bowermanによる彼の ブログ での回答#5と#11
...サーバーを起動するためにoninitコマンドを実行する前に、環境に設定する必要があります(UNIXの場合)。サーバーがWindows上にある場合は、レジストリーのHKEY_LOCAL_MACHINE\Software\Informix\Online \%INFORMIXSERVER%\ Environmentで変数を設定することもできます。
修正は、bothCLIENT_LOCALEをデフォルトの「EN_US.CP1252」に変更し、DB_LOCALEをデフォルトの「EN_US.8859-1」から「EN_US.UTF8」に変更することです。 「レジストリ内。
DB_LOCALEとCLIENT_LOCALEはJDBCデータベースのURLで設定できます。私のJythonコードを見てください: https://stackoverflow.com/questions/464567/how-to-get-trailing-spaces-from-varchar-column-in-informix-using-odbc =。ポーランド語のロケールでは、次のようなURLを使用します。
jdbc:informix-sqli://127:0:0:1:9088/test_td:informixserver=ol_mn;DB_LOCALE=pl_PL.CP1250;CLIENT_LOCALE=pl_PL.CP1250;charSet=CP1250