У меня есть установка с Microsoft Access 2010 в качестве внешнего интерфейса и сервера PostrgreSQL 9.5.12, работающего на Linux в качестве внутреннего интерфейса. На ПК с Windows установлен драйвер PostrgreSQL ODBC версии 10_02_0000 (последняя версия). Подключение на основе Unicode, настройки по умолчанию, за исключением Bool as char
инвалиды и True is -1
включен.
Проблема, с которой я сталкиваюсь, заключается в том, что новые записи, добавляемые из Access, сразу же блокируются и не могут быть изменены / удалены впоследствии. Сообщение об ошибке: Microsoft Access database engine stopped the process because you and another user are attempting to change the same data at the same time.
Я определенно единственный, кто имеет доступ к базе данных, и я могу без проблем изменять / удалять старые записи. Проблема возникает только с записями, которые я создаю сам.
Я нашел здесь ответ:
https://stackoverflow.com/questions/25088970/ms-access-odbc-with-postgresql-table-write-conflict
Моя проблема была вызвана timestamp
поле, которое было default now()
ограничение. Поскольку метка времени в PostgreSQL по умолчанию имеет более высокую точность по сравнению с Access, автоматическое обновление с помощью внутренней функции now()
вызвали конфликт из-за несоответствия ценностей. Снижение точности в базе данных за счет использования timestamp(0)
вместо просто timestamp
решает проблему.