我有一个设置,以 Microsoft Access 2010 作为前端,以在 Linux 上运行的 PostrgreSQL 服务器 9.5.12 作为后端。Windows PC 安装了 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.
我肯定是唯一一个访问数据库的人,我可以毫无问题地修改/删除旧记录。只有我自己创建的记录才会出现此问题。
答案1
我在这里找到了答案:
https://stackoverflow.com/questions/25088970/ms-access-odbc-with-postgresql-table-write-conflict
我的问题是由一个timestamp
有约束的字段引起的default now()
。由于 PostgreSQL 中的时间戳默认比 Access 具有更高的精度,因此通过内部函数自动更新now()
会因值不匹配而导致冲突。通过使用timestamp(0)
而不是降低数据库中的精度可以timestamp
解决问题。