Firebird Java:GDS异常。 335544421.远程接口拒绝连接

时间:2017-09-27 11:27:51

标签: java macos firebird

我正在尝试重做遗留应用程序......

我已下载并安装: FirebirdCS-2.5.7-27050-x86_64.pkg

我已经设置了以下内容: 导出FIREBIRD_HOME = / Library / Frameworks / Firebird.framework / Resources export PATH = $ PATH:$ FIREBIRD_HOME / bin

我使用以下方法测试安装:

$ isql 
Use CONNECT or CREATE DATABASE to specify a database
SQL> quit;

我可以使用isql连接数据库,我可以显示表格并从中选择数据:

$ isql -user sysdba -password masterkey
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect employee;
Database:  employee, User: sysdba
SQL> show tables;
   COUNTRY                                CUSTOMER                       
   DEPARTMENT                             EMPLOYEE                       
   EMPLOYEE_PROJECT                       JOB                            
   PROJECT                                PROJ_DEPT_BUDGET               
   SALARY_HISTORY                         SALES                          
SQL> quit;

我也可以使用gbak备份表,所以看起来Firebird的安装很好。

但是当我尝试使用 Java 连接到员工数据库时,出现以下错误消息时出现异常:

org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544421. connection rejected by remote interface

Java代码:

try
{
  Class.forName("org.firebirdsql.jdbc.FBDriver");
  connection = DriverManager.getConnection("jdbc:firebirdsql:localhost:3050//Library/Frameworks/Firebird.framework/Resources/examples/empbuild/employee.fdb", "sysdba", "masterkey");
}
catch (Exception e)
{
  e.printStackTrace();
}

我在“连接字符串”上尝试了很多变体,它们都会产生错误,因此问题。

我正在使用以下jar:

**jaybird-full-2.1.6.jar**

我正在使用Eclipse Helios,Java 1.6,我在Mac上使用OSX。

jar是错误的版本吗?

还有什么呢?

欢迎任何想法。

2 个答案:

答案 0 :(得分:1)

问题是您的JDBC URL无效,因为您正在以一种不起作用的方式组合Jaybird URL的两个不兼容的语法。正确的URL是:

"jdbc:firebirdsql://localhost:3050//Library/Frameworks/Firebird.framework/Resources/examples/empbuild/employee.fdb"

请注意,这可能仍会失败,因为Firebird配置中不允许使用此路径进行连接。

使用您问题中的URL,您实际上是在尝试连接到相对路径3050//Library/Frameworks/Firebird.framework/Resources/examples/empbuild/employee.fdb上的数据库(相对于Firebird安装或其他一些与配置相关的位置)。

您可以使用来自ISQL的connect employee这一事实,建议您可以使用带别名的连接URL:

"jdbc:firebirdsql://localhost:3050/employee"

或甚至更短(因为端口3050是默认值):

"jdbc:firebirdsql://localhost/employee"

另见JDBC URLs in the Jaybird FAQ

我强烈建议您使用别名(如上所述使用employee)连接到您的数据库,并将您的真实数据库放在/Library/Frameworks文件夹之外。

你真的需要更新你的Jaybird版本,Jaybird 2.1.6已经9岁了。最新版本是3.0.2,或者 - 如果您遇到Java 6 - 2.2.13,请参阅JDBC driver downloads on firebirdsql.org

披露:我是Jaybird的开发者之一。

答案 1 :(得分:0)

在Windows防火墙上解锁端口3050。