4

IBMAS400でGrailsWebアプリをjetty-7.6.3で実行しようとしています。そうすると、次のようなエラーが発生します。

Caused by: 
java.sql.SQLException: INTERNAL ERROR:  Creation of DB2Driver object for registering with DriverManager failed. -> com.ibm.db2.jdbc.app.DB2JDBCDataException: CCSID value is not valid.
at com.ibm.db2.jdbc.app.DB2ErrorDriver.throwSavedExceptions(DB2ErrorDriver.java:113)
at com.ibm.db2.jdbc.app.DB2ErrorDriver.handleURLProcessing(DB2ErrorDriver.java:296)
at com.ibm.db2.jdbc.app.DB2ErrorDriver.acceptsURL(DB2ErrorDriver.java:149)
at java.sql.DriverManager.getDriver(DriverManager.java:386)
at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
at org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:224)
at $Proxy16.getMetaData(Unknown Source)
at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:285)
at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:320)
at org.codehaus.groovy.grails.orm.hibernate.support.SpringLobHandlerDetectorFactoryBean.afterPropertiesSet(SpringLobHandlerDetectorFactoryBean.java:72)
...

それが役立つ場合は、スタックトレースをさらに提供できます。

これが私のデータソースです:

dataSource{
  dbCreate = "update"
  pooled = true
  url = "jdbc:db2:*local;naming=system;libraries=LIBV;errors=full"
  driverClassName = "com.ibm.db2.jdbc.app.DB2Driver"
  username = "user"
  password = "pass"
  dialect = org.hibernate.dialect.DB2400Dialect.class
}  

これをどこから始めればよいのか、どのファイルのCCSIDが間違っているのかわかりません。Webアプリのすべてのファイルを調べましたが、問題ないようです。助言がありますか?

4

1 に答える 1

4

私はGrailsプログラマーではありませんが、IBMiに精通しています。IBMサポート文書29290926には、CCSID65535は許可されていないと記載されています。

CCSIDがなかった数十年前に、かなりの数のミッドレンジマシンが販売およびセットアップされました。オペレーティングシステムが進化するにつれて、CCSID(コード化文字セットID)の概念が導入されました。それが起こったとき、OSの新しいバージョンにアップグレードする人々にはデフォルトのCCSID:65535が割り当てられました。CCSID65535は、事実上、「ファイルがどのようにエンコードされているのかわかりません」と言っています。実際には、すべてのファイルは、JPGやEXEファイルのようなバイナリデータであるかのように扱われます。

当時の推奨事項は、デフォルトを許可せず、実際のエンコードを記述したCCSIDを割り当てることでした。私が米国にいる場合、そのCCSIDは37-米国英語です。これをシステム全体に設定するQCCSIDと呼ばれるシステム値があります。もう1つのアプローチは、関連するユーザープロファイルを変更することです。 CHGUSRPRF username CCSID(37)

于 2013-03-07T19:41:38.420 に答える