2

この質問は質問https://stackoverflow.com/questions/3362965/problem-with-ddlutils-in-oracle-10gに似ています。私の問題は(または少なくとも私はそう思う)上記の質問とは少し異なるため、新しい問題を投稿します。

DdlUtils-1.0、Java-6 (OpenJdk)、ojdbc6.jar、および Oracle 11.1.0 を使用しています。移行は、ant タスクによって開始されます。タスクは次のようになります。

<target name="dump-db" description="Dumps DB" depends="">
  <taskdef name="databaseToDdl" classname="org.apache.ddlutils.task.DatabaseToDdlTask">
    <classpath>
        <path refid="runtime-classpath"/>
        <path refid="project-classpath"/>
    </classpath>
</taskdef>
  <databaseToDdl modelname="${modelname}" verbosity="DEBUG" databasetype="${source.platform}" 
    usedelimitedsqlidentifiers="true" tabletypes="TABLE" schemapattern="${schemapattern}">      
    <database url="${source.url}"
            driverClassName="${source.driver}"
            username="${source.username}"
            password="${source.passwd}"
            initialsize="5"
            testonborrow="true"
            testonreturn="true"/>

    <writeschemasqltofile failonerror="false" outputfile="${out.dir}/${schema.file.sql}"/>
    <writedtdtofile outputfile="${out.dir}/${schema.file.dtd}"/>
    <writeSchemaToFile failonerror="false" outputFile="${out.dir}/${schema.file.xml}"/>
    <writedatatofile failonerror="false" outputfile="${out.dir}/${data.file.xml}" determineschema="true"/>
  </databaseToDdl>
</target>

oracle11 は ddlutils でサポートされていないため、${source.platform} は「oracle10」に設定されます。スキーマ定義の作成は非常にうまく機能しますが、データをダンプするときに次の例外に直面します:

[databaseToDdl] org.apache.ddlutils.model.ModelException: 不明な JDBC タイプ コード 2007 [databaseToDdl] at org.apache.ddlutils.model.Column.setTypeCode(Column.java:215) [databaseToDdl] at org.apache.ddlutils. platform.JdbcModelReader.readColumn(JdbcModelReader.java:781) [databaseToDdl] at org.apache.ddlutils.platform.oracle.Oracle8ModelReader.readColumn(Oracle8ModelReader.java:117) [databaseToDdl] at org.apache.ddlutils.platform.JdbcModelReader. readColumns(JdbcModelReader.java:755) [databaseToDdl] at org.apache.ddlutils.platform.JdbcModelReader.readTable(JdbcModelReader.java:565) [databaseToDdl] at org.apache.ddlutils.platform.oracle.Oracle8ModelReader.readTable(Oracle8ModelReader. java:102) [databaseToDdl] at org.apache.ddlutils.platform.oracle.Oracle10ModelReader.readTable(Oracle10ModelReader.java:80) [databaseToDdl] at ...

http://download.oracle.com/javase/6/docs/api/constant-values.html#java.sql.Types.BITに、jdbc タイプ コードがリストされています。どうやら ddlutils はこの型コードを jdbc ドライバーから取得しますが、java.sql.Types で対応する型を見つけることができませんでした。

これを解決する方法を知っている人はいますか?

4

1 に答える 1

0

5 年後では非常に遅いですが、
考えてみると、将来的に役立つ可能性はほとんどありません。

訪問:org.apache.ddlutils.model.TypeMap
方法: getJdbcTypeName(int typeCode)
2007 を 12 に設定する小さなロジックを記述し
ます。

if(typeCode == 2007){
typeCode = java.sql.Types.VARCHAR;
}


問題:TypeMapping in DdlUtils, is done with exisitinf java.sql.Types enum. Whereas, for the Oracle11g, the are few extra types. Hence issue raised. お役に立てば幸いです。

于 2016-11-07T12:27:36.710 に答える