从 Windows 本地网络连接到 Firebird 数据库
Connecting to Firebird database from Windows local network
几个星期以来,我一直在编写一个小型 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 达尔 06-02-17.eft
- //CENTRALE/Danea Easyfatt/ANYMA 2017 达尔 06-02-17.eft
- \\\CENTRALE\\Danea Easyfatt\\ANYMA 2017 dal 06-02-17.eft
None 他们成功了。
您无法访问网络共享上的数据库。 Firebird 明确禁止此 *。但是,据我所知,您显示的错误仅表示您正在尝试使用无效路径访问文件。
如果您想通过网络连接到 Firebird 数据库,您应该连接到托管数据库的系统上的 Firebird 服务器。这意味着 运行 Firebird 服务器,不使用 Firebird Embedded。
* :您可以配置 Firebird 以允许在网络驱动器上打开数据库,但如果多个进程试图从不同的主机修改数据库,这是破坏数据库的好方法,这是一些你真的不应该这样做。
几个星期以来,我一直在编写一个小型 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 达尔 06-02-17.eft
- //CENTRALE/Danea Easyfatt/ANYMA 2017 达尔 06-02-17.eft
- \\\CENTRALE\\Danea Easyfatt\\ANYMA 2017 dal 06-02-17.eft
None 他们成功了。
您无法访问网络共享上的数据库。 Firebird 明确禁止此 *。但是,据我所知,您显示的错误仅表示您正在尝试使用无效路径访问文件。
如果您想通过网络连接到 Firebird 数据库,您应该连接到托管数据库的系统上的 Firebird 服务器。这意味着 运行 Firebird 服务器,不使用 Firebird Embedded。
* :您可以配置 Firebird 以允许在网络驱动器上打开数据库,但如果多个进程试图从不同的主机修改数据库,这是破坏数据库的好方法,这是一些你真的不应该这样做。