Подключение к базе данных Firebird из локальной сети Windows
Я пишу небольшое приложение на Python в течение нескольких недель. Приложение считывает данные из базы данных Firebird и копирует их в другую БД. Я использую FDB со встроенным Firebird.
Это мой код подключения.
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 ответ
Вы не можете получить доступ к базам данных на сетевом ресурсе. Firebird явно запрещает это*. Однако, насколько я могу судить, отображаемая ошибка просто означает, что вы пытаетесь использовать неверный путь для доступа к файлу.
Если вы хотите подключиться к базе данных Firebird по сети, вам следует подключиться к серверу Firebird в системе, где размещена база данных. Это означает запуск сервера Firebird, а не использование Firebird Embedded.
*: Вы можете настроить Firebird, чтобы разрешить открытие базы данных на сетевом диске, но это отличный способ повредить базу данных, если несколько процессов пытаются изменить базу данных с разных хостов, это то, что вам действительно не следует делать.