2017-09-20 127 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

相关问题