无法连接到Firebird(Ubuntu)

我是Ubuntu的新手,我只是把它安装在电脑上。 我安装了Samba并共享了文件夹“/ samba”和“/ hd”。 我下载并安装了Firebird,并复制了我在Windows上创build的数据库,并将其放入“/ samba”中。 这是我的Java代码:

public static Connection getConnection() throws SQLException { Connection connection = null; try { Class.forName("org.firebirdsql.jdbc.FBDriver"); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } connection = DriverManager.getConnection("jdbc:firebirdsql://localhost:3050/samba/LNX.FDB", "sysdba", "masterkey"); return connection; } public static void main(String[] args) throws SQLException { getConnection(); } 

我得到这个错误:

 Exception in thread "main" org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544344. I/O error during "open" operation for file "samba/LNX.FDB" Error while trying to open file null at org.firebirdsql.jdbc.FBDataSource.getConnection(FBDataSource.java:120) at org.firebirdsql.jdbc.AbstractDriver.connect(AbstractDriver.java:136) at java.sql.DriverManager.getConnection(DriverManager.java:571) at java.sql.DriverManager.getConnection(DriverManager.java:215) at br.com.ipsnet.jdbc.ConnectionFactory.getConnection(ConnectionFactory.java:16) at br.com.ipsnet.jdbc.ConnectionFactory.main(ConnectionFactory.java:22) Caused by: org.firebirdsql.gds.GDSException: I/O error during "open" operation for file "samba/LNX.FDB" Error while trying to open file null at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.readStatusVector(AbstractJavaGDSImpl.java:2098) at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.receiveResponse(AbstractJavaGDSImpl.java:2048) at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.internalAttachDatabase(AbstractJavaGDSImpl.java:463) at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.iscAttachDatabase(AbstractJavaGDSImpl.java:411) at org.firebirdsql.jca.FBManagedConnection.<init>(FBManagedConnection.java:105) at org.firebirdsql.jca.FBManagedConnectionFactory.createManagedConnection(FBManagedConnectionFactory.java:509) at org.firebirdsql.jca.FBStandAloneConnectionManager.allocateConnection(FBStandAloneConnectionManager.java:65) at org.firebirdsql.jdbc.FBDataSource.getConnection(FBDataSource.java:118) ... 5 more 

如果我去“/ samba”并input:

 isql-fb connect "localhost:/samba/LNX.FDB" user 'SYSDBA' password 'masterkey'; 

它工作得很好,我可以select,删除,更新,插入,…没有任何问题。

如果我在Windows机器上使用IBExpert连接到Ubuntu中的数据库,它会显示:

 Unable to complete network request to host "Server-Test". Failed to estabilish connection. 

如果我使用Flamerobin,它说:

 An assertion failed! ../src/common/strconv.cpp(3031): assert "Assert failure" failed in wxCSConv(): invalid encoding value in wxCSConv ctor 

但它连接。 我可以select,删除,更新,…

问题是,您在连接字符串jdbc:firebirdsql://localhost:3050/samba/LNX.FDB指定的路径是samba/LNX.FDB ,而不是/samba/LNX.FDB 。 相对路径取决于平台,用户和Firebird配置。

正如Jaybird发行说明中所述,您需要使用jdbc:firebirdsql://localhost:3050//samba/LNX.FDB

在Linux上,root /应该包含在路径中。 位于/opt/firebird/db.fdb上的数据库应使用下面的URL(注意端口之后的双斜杠!)。

 jdbc:firebirdsql://host:port//opt/firebird/db.fdb 

另外,你可以定义一个别名,并使用它。

至于你在IB专家和Flamerobin方面的问题,他们似乎是不相关的,应该是单独的问题。 IB专家问题似乎是您指定了无法解析为(IPv4)IP地址的主机名( server-Test ),或者服务器不接受连接请求。 原因可能是Firebird服务不在该IP地址上进行监听; 在Ubuntu默认情况下,Firebird只能监听本地主机。 flamerobin错误听起来像Flamerobin中的错误(或者您正在指定不支持的连接字符集(?))。

关于您使用samba和使用网络共享:不要将Firebird数据库放在网络共享上。 访问网络共享(特别是来自多个服务器)上的Firebird数据库可能会损坏数据库。 如果你想从多个主机访问Firebird数据库,那么你需要使用Firebird服务器并通过它连接。

关于IBExpert:这个截图是如何查看注册表与ubuntu连接的例子:

在这里输入图像描述