我对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/