Я получаю ошибку crypti c MSAccess, и я не могу понять, что ее вызывает.
У меня есть следующие настройки :
- Golang / веб-сервер Gin (Windows), вызывающий
- скомпилированный python скрипт (.exe), который использует COM для вызова макроса
- MSAccess для экспорта запроса к базе данных в определенный формат.
У меня также есть примитивная регистрация в нескольких слоях, чтобы помочь я отлаживаю в такой странной архитектуре.
Ошибка регистрируется с python: <class 'pywintypes.com_error'>: (-2147352567, 'Ausnahmefehler aufgetreten.', (0, None, 'Sie haben den vorherigen Vorgang abgebrochen.', 'vbaac10.chm', 5738, -2146826287), None)
, что примерно соответствует
<class 'pywintypes.com_error'>: (-2147352567, 'Unknown error.', (0, None, 'You canceled the previous operation.', 'vbaac10.chm', 5738, -2146826287), None)
.
Странно то, что если я сам запускаю исполняемый файл python, все работает как положено, и никаких ошибок не возникает. Однако, если я вызываю его из моего golang кода (веб-сервер / тесты), он выдает «Вы отменили предыдущую операцию». ошибка, которая, насколько я могу судить по чтению в Интернете, возникает, когда имя макроса или имя таблицы неверны.
Единственная гипотеза, которую я имею сейчас, состоит в том, что из-за различных прав пользователя, когда мой golang выполняет его, когда я выполняю его сам?
Вот соответствующий python код, используемый для вызова макроса:
import pythoncom
import win32com.client
import sys
import logger
log = logger.Logger("data-sync.txt")
def export_db(db_path):
try:
log.info(f"Exporting database under: {db_path}")
log.info("- Connecting to Access COM interface.")
oAccess = win32com.client.Dispatch("Access.Application")
log.info("- Opening provided database.")
oAccess.OpenCurrentDatabase(db_path, False)
log.info("- Running Macro \"ExportDb\"")
oAccess.DoCmd.RunMacro("ExportDb")
log.info("- Running complete, closing database")
oAccess.CloseCurrentDatabase()
except Exception as err:
log.error(type(err), err)
pass
pass
Я трижды проверил пути и имя вызываемого макроса, любые другие идеи приветствуются.