Search code examples
pythonfirebird

connection refused while using firebirdsql to connect localhost fdb file


I'm trying to read fdb files in Ubuntu using firebirdsql:

conn = firebirdsql.connect(host='localhost', database='db.fdb',
                           user='sysdba', password='masterkey', charset='utf8')

But while connecting, it just said Connection refused.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "~/.local/lib/python3.6/site-packages/firebirdsql/__init__.py", line 94, in connect
    conn = Connection(**kwargs)
  File "~/.local/lib/python3.6/site-packages/firebirdsql/fbcore.py", line 595, in __init__
    self.sock = SocketStream(self.hostname, self.port, self.timeout, cloexec)
  File "~/.local/lib/python3.6/site-packages/firebirdsql/socketstream.py", line 46, in __init__
    self._sock = socket.create_connection((host, port), timeout)
  File "/usr/lib/python3.6/socket.py", line 724, in create_connection
    raise err
  File "/usr/lib/python3.6/socket.py", line 713, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

the code works well on Windows Server, but on Ubuntu it can't establish the connection, how can I solve it?


Solution

  • In the comments you indicate you don't have a Firebird server installed on your machine. As there is no server listening on localhost port 3050, you get the connection refused error.

    That firebirdsql, the driver you're using, is pure Python doesn't mean it can open database files by itself, it means it doesn't use a native library to establish a connection, but that it implements the Firebird TCP/IP wire protocol in Python. You will need a Firebird server (either localhost or remotely) to connect to.

    Also: a server normally won't be able to access files in your home directory.