2017-09-20 128 views
0

我正在使用Derby Embedded DB運行一組Junit的Java + Spring項目。我希望能夠使用Squirrel SQL客戶端查詢嵌入式數據庫,而不是通過我的junit測試直接訪問它。原因是我正在處理一些非常複雜的數據結構,並且使用編輯器查詢將對構建我的測試用例非常有幫助。當我在調試中運行我的JUnit時,我在數據庫初始化後放置一個斷點並將其保留在那裏,這意味着此時嵌入的數據庫已創建。下面顯示了連接DB的彈簧配置。與松鼠連接到Derby嵌入式數據庫

<bean id="targetDataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.apache.derby.jdbc.EmbeddedDriver" /> 
    <property name="url" value="jdbc:derby:memory:unitTestDB;create=true" /> 
    <property name="username" value="sa" /> 
    <property name="password" value="" /> 
</bean> 

下面顯示控制檯輸出,數據庫在這一點上滿載...

Executing SQL script from class path resource [mydb/create-schema.sql] 
Done executing SQL script from class path resource [mydb/create-schema.sql] in 107 ms. 
Executing SQL script from class path resource [mydb/create-sequences.sql] 
Done executing SQL script from class path resource [mydb/create-sequences.sql] in 403 ms. 
Executing SQL script from class path resource [mydb/create-tables.sql] 
Done executing SQL script from class path resource [mydb/create-tables.sql] in 3844 ms. 
Executing SQL script from class path resource [mydb/create-views.sql] 
Done executing SQL script from class path resource [mydb/create-views.sql] in 2118 ms. 
Executing SQL script from class path resource [mydb/MY_TABLE.sql] 
Done executing SQL script from class path resource [mydb/MY_TABLE.sql] in 1380 ms. 

我使用我的JUnit套件使用,並創建了一個看起來像下面的別名相同的驅動程序在松鼠......

enter image description here

我可以創建一個連接,但它似乎像松鼠是無法加載模式+表。

enter image description here

什麼可能我做錯了嗎?

回答

1

我不認爲你可以有一個嵌入式實例被多個JVM進程訪問。由於您在URL中創建了= true,因此爲您的Squirrel客戶端創建了另一個嵌入式數據庫。

有關更多信息,請參閱this answer

+0

有趣的是,有一種感覺是這樣的事情正在發生。 – Jason

+0

只有一個JVM實例可以安裝嵌入式數據庫,這是正確的。想象一下,兩臺數據庫服務器試圖同時管理同一個磁盤上的數據庫。這是一樣的想法。 – Bill

相關問題