【问题标题】:dbunit schema parameter does not workdbunit 架构参数不起作用
【发布时间】:2012-03-02 19:08:46
【问题描述】:

我有以下 dbunit 配置

<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>dbunit-maven-plugin</artifactId>
        <version>1.0-beta-3</version>
        <dependencies>
        <dependency>
         <groupId>ojdbc6</groupId>
             <artifactId>ojdbc6</artifactId>
             <version>1.0</version>
             <scope>system</scope>
             <systemPath>${project.basedir}/lib/ojdbc6.jar</systemPath>
         </dependency>
        </dependencies>
        <configuration>
            <driver>oracle.jdbc.driver.OracleDriver</driver>
            <url>jdbc:oracle:thin:@host.com:1521/user</url>
            <username>user</username>
            <password>password</password>
            <format>flat</format>
            <schema>myschemaname</schema>
            <useQualifiedTableNames>true</useQualifiedTableNames> 
            <tables>
                <table>
                    <name>tablename</name>
                </table>
            </tables>
         </configuration>
    </plugin>

当我运行导出目标时,它失败并出现 sql 异常,说明找不到表。但是,如果我将表名从 tablename 更改为 myschemaname.tablename 并删除 schema 节点导出工作正常。即使我不删除schema 节点,它也可以正常工作,所以它不会因myschemaname.tablename 表名而失败。

配置有什么问题?

【问题讨论】:

    标签: java maven dbunit


    【解决方案1】:

    尝试将 useQualifiedTableNames 设置为 false:

    <useQualifiedTableNames>false</useQualifiedTableNames> 
    

    查看 dbunit maven 插件文档here

    更新:
    如果您使用 Oracle 10g,您可能还需要启用 skipOracleRecycleBinTables

    <skipOracleRecycleBinTables>true</skipOracleRecycleBinTables> 
    

    如 DBUnit 文档 here 所述:

    跳过 Oracle 10g 回收站表

    启用或禁用 oracle 回收站表(以 BIN$ 开头的表)的处理。 Oracle 10g 回收站表可能会破坏 DbUnit 对模式中表名唯一性的假设,因为这些表区分大小写。为 Oracle 10g 数据库启用此功能,直到修复了 oracle 驱动程序中的错误,该错误会错误地将此系统表报告给 DbUnit。

    希望这会有所帮助。

    【讨论】:

    • 我认为useQualifiedTableNames 强制使用模式名称扩展表名。对吗?
    • @mishanesterenko,根据文档,如果您将其设置为 true,则需要像 mySchema.myTable 一样定义您的 ,只需将其设置为 false 并尝试一下。跨度>
    • 不幸的是,这没有帮助。
    • 这似乎节点schema对表名解析没有任何影响。
    • 我已经尝试了useQualifiedTableNamesskipOrgacleRecycleBinTables 的所有组合,但没有运气。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    相关资源
    最近更新 更多