首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Firebird Java: GDS异常。335544421。连接被远程接口拒绝

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

Stack Overflow用户
提问于 2017-09-27 19:27:51
回答 2查看 5.8K关注 0票数 2

我正在尝试修改一个遗留的应用程序...

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

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

我已经使用以下内容来测试安装:

代码语言:javascript
复制
$ isql 
Use CONNECT or CREATE DATABASE to specify a database
SQL> quit;

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

代码语言:javascript
复制
$ 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备份表格,所以看起来火鸟的安装很好。

但是,当我尝试使用Java连接到employee数据库时,我得到了一个异常,错误消息如下:

代码语言:javascript
复制
org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544421. connection rejected by remote interface

Java代码:

代码语言:javascript
复制
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();
}

我尝试了许多‘连接字符串’的变体,它们都会产生错误,所以这不是问题所在( the problem )。

我正在使用下面的jar:

代码语言:javascript
复制
**jaybird-full-2.1.6.jar**

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

这个jar是不是版本错了?

还能是什么呢?

任何想法都是受欢迎的。

EN

回答 2

Stack Overflow用户

发布于 2017-09-27 22:47:59

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

代码语言:javascript
复制
"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:

代码语言:javascript
复制
"jdbc:firebirdsql://localhost:3050/employee"

或者更短(因为端口3050是默认端口):

代码语言:javascript
复制
"jdbc:firebirdsql://localhost/employee"

另请参见JDBC URLs in the Jaybird FAQ

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

你真的需要更新你的Jaybird版本了,Jaybird 2.1.6已经9岁了。最新的版本是3.0.2,或者-如果你坚持使用Java6- 2.2.13,请参阅JDBC driver downloads on firebirdsql.org

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

票数 1
EN

Stack Overflow用户

发布于 2019-10-04 03:30:48

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46446733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档