Подключение к базе данных 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, чтобы разрешить открытие базы данных на сетевом диске, но это отличный способ повредить базу данных, если несколько процессов пытаются изменить базу данных с разных хостов, это то, что вам действительно не следует делать.

Другие вопросы по тегам