我正在尝试修改一个遗留的应用程序...
我已经下载并安装:FirebirdCS-2.5.7-27050-x86_64.pkg
我已经设置了以下内容:bin export FIREBIRD_HOME=/Library/Frameworks/Firebird.framework/Resources export PATH=$PATH:$FIREBIRD_HOME/
我已经使用以下内容来测试安装:
$ 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备份表格,所以看起来火鸟的安装很好。
但是,当我尝试使用Java连接到employee数据库时,我得到了一个异常,错误消息如下:
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();
}
我尝试了许多‘连接字符串’的变体,它们都会产生错误,所以这不是问题所在( the problem )。
我正在使用下面的jar:
**jaybird-full-2.1.6.jar**
我使用的是Eclipse Helios,Java 1.6,我在Mac上使用的是OSX。
这个jar是不是版本错了?
还能是什么呢?
任何想法都是受欢迎的。
发布于 2017-09-27 22:47:59
问题是您的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,或者-如果你坚持使用Java6- 2.2.13,请参阅JDBC driver downloads on firebirdsql.org。
披露:我是Jaybird的开发者之一。
发布于 2019-10-04 03:30:48
解锁Windows防火墙上的端口3050。
https://stackoverflow.com/questions/46446733
复制相似问题