我是macOS用户,只是为了使用firebird创建数据库,我得到了奇怪的错误。我看到有一些带有firebird的dock容器运行得很好(我能够创建数据库,执行查询等)但是当我尝试从我的本地ISQL或razorSQL客户端(通过JDBC)连接时,我得到一些奇怪的错误,如"不可用的数据库"或者"无法打开文件"
我也不确定 ISQL CONNECT 字符串是如何工作的,因为我看到的每个网站都有不同的字符串。
我得到了这个泊坞窗图片:(https://hub.docker.com/r/jacobalberty/firebird/)
我像这样创建了我的容器:
docker run -d --name firebird -p 3050:3050 -v /data/firebird/databases:/databases jacobalberty/firebird:2.5-ss
我的码头机IP是:
192.168.99.100
我试着像这样连接:
CONNECT '0.0.0.0:3050://databases/test.fdb' user 'SYSDBA' password 'masterkey';
unavailable database
也是这样:
CONNECT '192.168.99.100:/databases/test.fdb' user 'SYSDBA' password 'masterkey';
connection rejected by remote interface
CONNECT '192.168.99.100:3050:/databases/test.fdb' user 'SYSDBA' password 'masterkey';
Statement failed, SQLSTATE = 08001
unavailable database
当我进入泊坞窗容器时,文件就在那里:
root@e4212b9f9d16:/databases# pwd
/databases
root@e4212b9f9d16:/databases# ls
test.fdb
另外,我不确定如何检查firebird服务器是否正在运行(我想这是因为我可以“连接到容器内的数据库”,但是... docker container最终正常运行 - 在ip和port上成功运行了telnet)
我也尝试使用容器IP(172.17.0.2)但是我有一个超时
我最熟悉的mysql和SQLite从来没有触及firebird数据库之前和用户得到这个数据库,我必须嘲笑它,使用假数据开发应用程序然后将其连接到真正的firebird(所以更改数据库是不是一种选择)
答案 0 :(得分:2)
您的大多数问题都是您的连接字符串,它应该是<host>/<port>:<database-path-or-alias>
,其中/<port>
的默认值将默认为端口3050.
除了
之外,这会解决您的所有问题CONNECT '192.168.99.100:/databases/test.fdb' user 'SYSDBA' password 'masterkey'; connection rejected by remote interface
因为该连接字符串是有效的。
此错误表示您可以连接到服务器,但连接被拒绝。例如,这可能发生在使用Firebird 3时,但使用Firebird 2.5 ISQL / fbclient库连接,并且没有放宽Firebird 3的安全设置(请参阅Firebird 3发行说明中的Legacy Authentication)。
答案 1 :(得分:1)
因此,关于&#39;创建您的firebird服务器的标准文档&#39;不要提及你在firebird.conf上,变量 RemoteBindAddress 必须为空
文件:
/etc/firebird/2.5/firebird.conf
行改变了:
RemoteBindAddress =
#RemoteBindAddress = localhost
感谢所有
答案 2 :(得分:0)
要查明服务器是否正在运行,请使用:
docker ps
为了确定服务器是否实际启动,或者在启动时出错,请在没有-d的情况下启动容器,并在运行时查看日志消息:
docker run --name firebird -p 3050:3050 -v /data/firebird/databases:/databases jacobalberty/firebird:2.5-ss