从Windows本地网络连接到Firebird数据库

时间:2018-02-06 13:51:34

标签: python firebird firebird-embedded

我已经写了几个星期的小型Python应用程序了。应用程序从Firebird数据库读取数据,并将其复制到另一个数据库。我正在使用嵌入了Firebird的FDB。

这是我的连接代码。

def createConnectionTo(path):
    try:
        connection = fdb.connect(
            database=path,
            user='SYSDBA',
            password='masterkey',
            charset='WIN1252'
        )
        print("Connessione al database riuscita!\n")
        return connection
    except fdb.fbcore.DatabaseError as details:
        errorMsg = "ERRORE: impossibile connettersi al database!\nPer favore scegliere un altro file.\n\nDETTAGLI\n"+str(details).replace("\\n", "\n")+"\n"
        print(errorMsg)
        return False
    except fdb.fbcore.ProgrammingError as details:
        errorMsg = "ERROR: bad parameters value!\nPlease check your connection code.\nDETAILS: "+str(details)+"\n"
        print(errorMsg)
        return False
    except Exception as errorMsg:
        print("ERRORE: "+str(errorMsg))
        input("Premi un ENTER per chiudere la finestra.")
        return -1

此代码适用于我的计算机内的文件夹,但莫名其妙地它不适用于我们本地网络中共享的文件夹。我使用os.path.exists()检查Python是否能够找到所选的共享文件夹并且它总是返回True。

我一直收到此错误,我不知道如何解决它即使我怀疑它与斜杠转换问题有些相关。

('Error while connecting to database:
- SQLCODE: -902
- I/O error during "CreateFile (open)" operation for file "Danea Easyfatt\\ANYMA 2017 dal 06-02-17.eft"
- Error while trying to open file
- Impossibile trovare il percorso specificato. ', -902, 335544344)

我尝试了以下所有方式来输入路径:

  • \\ CENTRALE \ Danea Easyfatt \ ANYMA 2017 dal 06-02-17.eft
  • // CENTRALE / Danea Easyfatt / ANYMA 2017 dal 06-02-17.eft
  • \\\ CENTRALE \\ Danea Easyfatt \\ ANYMA 2017 dal 06-02-17.eft

他们都没有工作。

1 个答案:

答案 0 :(得分:5)

您无法访问网络共享上的数据库。 Firebird明确禁止此 * 。但是,据我所知,您显示的错误只是意味着您尝试使用无效路径来访问文件。

如果要通过网络连接到Firebird数据库,则应连接到托管数据库的系统上的Firebird服务器。这意味着运行Firebird服务器,而不是使用Firebird Embedded。

*:您可以将Firebird配置为允许在网络驱动器上打开数据库,但如果多个进程尝试从不同的主机修改数据库,这是破坏数据库的好方法,这是您真的不应该做的事情做。