[seasar-dotnet:538] DBFlute:Oracle の日本語テーブルの SQL エラー回避方法はありますか

小林貴生 [E-MAIL ADDRESS DELETED]
2007年 7月 20日 (金) 12:33:13 JST


初めまして、小林と申します。
ご質問がありまして、メールさせていただきました。


現状、DBFlute 0.5.3 を使用し、
C#用に、ソースを生成したいと考えております。

環境:
OS WindowsXP SP2
JDK 5.0.12
ANT 1.7.0

今、困っているのは、Oracleで日本語を含むテーブルに対して
jdbc.bat がうまく行かないことです。

もしかして、DBFlute 0.5.3 のこれの現象なのかなと思っているのですが、やはりそうでしょうか。

> {BUG}
> [DBFLUTE-116] {Java/C#}: OracleでTable名が日本語の場合にSQLExceptionが発生してしまうのを修正すること。


エラーは、こんな感じです。

2007-07-20 11:56:23,609 [main] INFO  (TorqueJDBCTransformTask#generateXML():245) - ...Processing table: 社員
2007-07-20 11:56:23,796 [main] WARN  (TorqueJDBCTransformTask#generateXML():328) - Failed to get unique column information! But continue...
java.sql.SQLException: コールに無効な引数があります。
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
	at oracle.jdbc.OracleDatabaseMetaData.getIndexInfo(OracleDatabaseMetaData.java:3475)
	at org.seasar.dbflute.helper.jdbc.metadata.DfUniqueKeyHandler.getUniqueColumnNameList(DfUniqueKeyHandler.java:107)
	at org.apache.torque.task.TorqueJDBCTransformTask.getUniqueColumnNameList(TorqueJDBCTransformTask.java:459)
	at org.apache.torque.task.TorqueJDBCTransformTask.generateXML(TorqueJDBCTransformTask.java:326)
	at org.apache.torque.task.TorqueJDBCTransformTask.doExecute(TorqueJDBCTransformTask.java:180)
	at org.seasar.dbflute.task.bs.DfAbstractTask.execute(DfAbstractTask.java:69)
	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
	at org.apache.tools.ant.Task.perform(Task.java:348)
	at org.apache.tools.ant.Target.execute(Target.java:357)
	at org.apache.tools.ant.Target.performTasks(Target.java:385)
	at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
	at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
	at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
	at org.apache.tools.ant.Main.runBuild(Main.java:698)
	at org.apache.tools.ant.Main.startAnt(Main.java:199)
	at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
	at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)


同名のテーブルを、
Oracle8i、Oracle9i にも作ってやってみましたが同じ結果でした。


力業でも良いので、このエラーを何とか回避する方法はないでしょうか?。
(今なら、日本語のテーブル名なんて作らないんですが、なにぶん昔に作ったテーブルなもので...)


以上、どなたかおわかりになる方、アドバイスをお願いしたいです。



小林



seasar-dotnet メーリングリストの案内