2012-03-02 27 views
0

我有以下配置的DbUnitDbUnit的模式參數不起作用

<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表名稱而失敗。

什麼是錯的配置?

回答

1

嘗試集useQualifiedTableNames爲false:

<useQualifiedTableNames>false</useQualifiedTableNames> 

檢查出的DbUnit Maven插件文件here

UPDATE:
如果使用Oracle 10g中,您可能需要啓用skipOracleRecycleBinTables還有:

跳過的Oracle 10g RECYCLEBIN表:

<skipOracleRecycleBinTables>true</skipOracleRecycleBinTables> 

正如DBUnit的文檔here聲明

啓用或禁用對Oracle回收站表(以BIN $開頭的表)的處理。 Oracle 10g recyle bin表可能會破壞DbUnit對模式內表名的唯一性假設,因爲這些表區分大小寫。爲Oracle 10g數據庫啓用此功能,直到Oracle驅動程序中的錯誤得到修復,該錯誤將此係統表錯誤地報告給DbUnit。

希望這會有所幫助。

+0

我認爲'useQualifiedTableNames'勢力延伸至與該架構名稱的表名。這是對的嗎? – 2012-03-02 21:07:31

+0

@mishanesterenko,根據該文件,如果你把它設置爲true,你需要定義

像mySchema.myTable,只需將其設置爲false,並嘗試一下。 – yorkw 2012-03-02 21:15:09

+0

不幸的是,這並沒有幫助。 – 2012-03-02 21:29:36