2011-03-24 74 views
8

我有許多單元測試,它們在內存中使用Apache Derby。 我的連接網址是:jdbc:derby:memory:srf.derby;create=true在內存中使用Apache Derby時出現警告

我發現,每一次,當標記爲@Transactional的方法整理,我收到一個警告德比

12:53:28:5328 [org.hibernate.util.JDBCExceptionReporter] [main] WARN - SQL Warning: 10000, SQLState: 01J01 
12:53:28:5328 [org.hibernate.util.JDBCExceptionReporter] [main] WARN - Database 'memory:srf.derby' not created, connection made to existing database instead. 

爲什麼呢?我做錯了什麼?

謝謝

+0

它是Spring's @Transactional? – TheConstructor 2015-04-02 11:30:31

回答

8

你沒有做錯什麼。您每次都傳遞'; create = true',但數據庫僅在您的程序首次訪問時創建。由於它在內存中,因此數據庫會一直存在,直到程序退出,然後消失。

您可以通過僅在測試套件中的第一個測試中傳遞'; create = true'來避免警告,然後後續測試不需要傳遞該值。

或者,您可以不用擔心警告。

+0

我看到問題不是數據庫創建。在同一測試中,每次執行交易方法時都會打印此警告。 我切換到基於文件的嵌入式數據庫,但仍然有相同的警告 – 2011-03-24 13:47:00

+3

準確地說,每次連接到已存在的Derby數據庫時,使用包含「; create = true」的連接URL,您將獲得警告。這不是因爲它在內存中,這是因爲它已經存在,並且你正在告訴德比創建它。 – 2011-03-24 14:11:38