dbunit架构参数不起作用

时间:2012-03-02 19:08:46

标签: java maven dbunit

我有以下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节点它也能正常工作,所以它不会因{1}}表名而失败。

配置有什么问题?

1 个答案:

答案 0 :(得分:1)

尝试将useQualifiedTableNames设置为false:

<useQualifiedTableNames>false</useQualifiedTableNames> 

查看dbunit maven插件文档here

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

<skipOracleRecycleBinTables>true</skipOracleRecycleBinTables> 

如DBUnit doc here中所述:

  

跳过Oracle 10g回收站表

     

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

希望这有帮助。