我对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表名而失败。

配置有什么问题?

最佳答案

尝试将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。


希望这可以帮助。

关于java - dbunit模式参数不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9538961/

10-11 22:16