2012-10-16 49 views
7

Tôi đang cố gắng thiết lập cơ sở dữ liệu HSQL để thử nghiệm, sử dụng phiên bản 2.2.9, Hibernate 3.6.9 và Spring 3.1.2. Chúng tôi đã sử dụng cơ sở dữ liệu postgresql cục bộ nhưng đang thực hiện chuyển đổi để thử nghiệm. Tôi có 40-50 bài kiểm tra với tổng số hơn 200 bài kiểm tra. Mỗi lớp thử nghiệm hoạt động tốt nếu chạy riêng lẻ từ nhật thực. Khi tôi sử dụng Maven để biên dịch và kiểm tra mọi thứ tôi có lỗi kiểm tra. Tại một số điểm có vẻ như nó đang cố gắng chạy lại tập lệnh init.sql của tôi và tạo lại các bảng. Tôi nhận được này là nguyên nhân cuối cùng của tôi:Tên đối tượng HSQLDB đã tồn tại

Caused by: org.hsqldb.HsqlException: object name already exists: DUAL_ASSET_ASSETID_SEQ 
at org.hsqldb.error.Error.error(Unknown Source) 
at org.hsqldb.error.Error.error(Unknown Source) 
at org.hsqldb.SchemaObjectSet.checkAdd(Unknown Source) 
at org.hsqldb.SchemaManager.checkSchemaObjectNotExists(Unknown Source) 
at org.hsqldb.StatementSchema.setOrCheckObjectName(Unknown Source) 
at org.hsqldb.StatementSchema.getResult(Unknown Source) 
at org.hsqldb.StatementSchema.execute(Unknown Source) 
at org.hsqldb.Session.executeCompiledStatement(Unknown Source) 
at org.hsqldb.Session.executeDirectStatement(Unknown Source) 
at org.hsqldb.Session.execute(Unknown Source) ... 52 more 

tôi đã cố gắng sử dụng 'NẾU KHÔNG EXISTS' khi tạo bảng nhưng khi tôi đi để tạo ra các chuỗi Tôi nhận được lỗi tương tự. Vì vậy, nó đang cố gắng làm nhiều hơn chỉ là một bảng, và tôi không thể sử dụng 'IF NOT EXISTS' trên một câu lệnh CREATE SEQUENCE vì vậy tôi bị mắc kẹt ở đó.

Có lý do nào khiến dữ liệu của tôi có vẻ được tải lại không? Đôi khi tôi cũng gặp phải lỗi này:

2012-10-16 10:55:48,489 [Thread-0] WARN 
org.springframework.jdbc.datasource.embedded.HsqlEmbeddedDatabaseConfigurer:shutdown:46 - Could not shutdown embedded database java.sql.SQLException: Database lock acquisition failure: attempt to connect while db opening /closing 
at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 
at org.hsqldb.jdbc.Util.sqlException(Unknown Source) 
at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source) 
at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source) 
at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source) 
at org.springframework.jdbc.datasource.SimpleDriverDataSource.getConnectionFromDriver(SimpleDriverDataSource.java:140) 
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149) 
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119) 
at org.springframework.jdbc.datasource.embedded.AbstractEmbeddedDatabaseConfigurer.shutdown(AbstractEmbeddedDatabaseConfigurer.java:40) 
at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactory.shutdownDatabase(EmbeddedDatabaseFactory.java:152) 
at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactoryBean.destroy(EmbeddedDatabaseFactoryBean.java:65) 
at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:211) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:498) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:474) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:442) 
at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1071) 
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1045) 
at org.springframework.context.support.AbstractApplicationContext$1.run(AbstractApplicationContext.java:963) Caused by: org.hsqldb.HsqlException: Database lock acquisition failure: attempt to connect while db opening /closing at org.hsqldb.error.Error.error(Unknown Source) 
at org.hsqldb.error.Error.error(Unknown Source) 
at org.hsqldb.error.Error.error(Unknown Source) 
at org.hsqldb.DatabaseManager.getDatabase(Unknown Source) 
at org.hsqldb.DatabaseManager.newSession(Unknown Source) ... 16 more 
+0

[Câu hỏi này được đăng chéo] (http://sourceforge.net/projects/hsqldb/forums/forum/73674/topic/6025433). –

Trả lời

0

Phiên bản hiện tại của HSQLDB cho phép TẠO TẠO NỘI DUNG NẾU KHÔNG phát biểu.

Ngoài ra để kiểm tra, bạn có thể chỉ cần thả toàn bộ nội dung của lược đồ PUBLIC trước khi tạo bất kỳ đối tượng nào.

DROP SCHEMA PUBLIC CASCADE 
Các vấn đề liên quan