Java 使用Squirrel连接到Derby嵌入式数据库

Java 使用Squirrel连接到Derby嵌入式数据库,java,spring,derby,Java,Spring,Derby,我正在从事一个Java+Spring项目,该项目使用Derby嵌入式数据库来运行一套Junits。我希望能够使用SquirrelSQL客户机查询嵌入式数据库,而不是通过junit测试直接访问它。原因是我正在处理一些非常复杂的数据结构,使用编辑器进行查询对于构建测试用例非常有帮助。当我在调试中运行JUnits时,我会在数据库初始化后放置一个断点,并将其保留在那里,这意味着此时将创建嵌入式数据库。下面显示了连接DB的spring配置 <bean id="targetDataSource"

我正在从事一个Java+Spring项目,该项目使用Derby嵌入式数据库来运行一套Junits。我希望能够使用SquirrelSQL客户机查询嵌入式数据库,而不是通过junit测试直接访问它。原因是我正在处理一些非常复杂的数据结构,使用编辑器进行查询对于构建测试用例非常有帮助。当我在调试中运行JUnits时,我会在数据库初始化后放置一个断点,并将其保留在那里,这意味着此时将创建嵌入式数据库。下面显示了连接DB的spring配置

<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>
我使用的驱动程序与我的junit套件使用的驱动程序相同,并在Squirrel中创建了一个如下所示的别名

我可以创建连接,但Squirrel似乎无法加载模式+表


我在这里可能做错了什么?

我认为一个嵌入式实例不能被多个JVM进程访问。由于URL中的create=true,它为Squirrel客户端创建了另一个嵌入式数据库


有关更多信息,请参阅。

有趣的是,我有一种类似的感觉。关于只有一个JVM实例可以装载嵌入式数据库,您是正确的。设想两个数据库服务器试图同时管理磁盘上的同一个数据库。这是同样的想法。
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.