2013-06-12 116 views
0

我試圖用火鳥內嵌DB與Hibernate在一起,但我在嘗試創建數據庫時出現以下錯誤:嵌入式Firebird數據庫和Hibernate

Caused by: org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544344. I/O error during "CreateFile (open)" operation for file "D:\DB\FIREBIRD.FDB" 
Error while trying to open file 
null 
    at org.firebirdsql.jdbc.FBDataSource.getConnection(FBDataSource.java:123) 
    at org.firebirdsql.jdbc.AbstractDriver.connect(AbstractDriver.java:126) 
    at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:204) 
    at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:292) 
    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:214) 
    ... 32 more 
Caused by: org.firebirdsql.gds.GDSException: I/O error during "CreateFile (open)" operation for file "D:\DB\FIREBIRD.FDB" 
Error while trying to open file 
null 
    at org.firebirdsql.gds.impl.jni.JniGDSImpl.native_isc_attach_database(Native Method) 
    at org.firebirdsql.gds.impl.jni.BaseGDSImpl.iscAttachDatabase(BaseGDSImpl.java:158) 
    at org.firebirdsql.jca.FBManagedConnection.<init>(FBManagedConnection.java:105) 
    at org.firebirdsql.jca.FBManagedConnectionFactory.createManagedConnection(FBManagedConnectionFactory.java:490) 
    at org.firebirdsql.jca.FBStandAloneConnectionManager.allocateConnection(FBStandAloneConnectionManager.java:69) 
    at org.firebirdsql.jdbc.FBDataSource.getConnection(FBDataSource.java:120) 
    ... 36 more 

我做了什麼至今:

  1. 我已經設置了休眠配置。
    驅動= 「org.firebirdsql.jdbc.FBDriver」
    方言= 「org.hibernate.dialect.FirebirdDialect」
    URL = 「JDBC:firebirdsql:嵌入式:d:\ DB \ FIREBIRD.FDB」,

  2. 我已將jaybird-full jar添加到我的類路徑中。

  3. 我已經加入jaybird22.dllfbembed.dll(整個文件夾),以我的道路。

的DLL文件似乎被加載,因爲如果我刪除的dll我得到和異常告訴我,jaybird22.dll無法找到。

任何想法可能是錯誤的?

+0

我假設d:\ DB存在,你必須在它創建文件的權限。試試jdbc:firebirdsql:embedded:D:/DB/FIREBIRD.FDB。你可以在不使用休眠的情況下使用數據庫嗎? – BevynQ

回答

1

看來我還是缺少步驟手動創建數據庫文件:

FBManager manager = new FBManager(GDSType.getType("EMBEDDED")); 
manager.start(); 
manager.createDatabase(myDbFile, username, password); 
manager.stop();