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>

${source.platform} 设置为“oracle10”,因为 ddlutils 不支持 oracle11。模式定义的创建工作得很好,但是在转储数据时我面临以下异常:

[databaseToDdl] org.apache.ddlutils.model.ModelException:未知 JDBC 类型代码 2007 [databaseToDdl] 位于 org.apache.ddlutils.model.Column.setTypeCode(Column.java:215) [databaseToDdl] 位于 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] 在 org.apache.ddlutils.platform.oracle.Oracle10ModelReader.readTable(Oracle10ModelReader.java:80) [databaseToDdl] 在...

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 回答