【问题标题】:Microsoft Access Driver: Specified driver could not be loaded due to system error 1114Microsoft Access 驱动程序:由于系统错误 1114,无法加载指定的驱动程序
【发布时间】:2021-01-02 18:24:04
【问题描述】:

我正在尝试使用带有以下代码的 pyodbc 模块连接到 .mdb 数据库:

import pyodbc

MDB = 'C:\\Program Files (x86)\\OnCourt\\OnCourt.mdb'
DRV = '{Microsoft Access Driver (*.mdb, *.accdb)}'
PWD = 'qKbE8lWacmYQsZ2'
conn = pyodbc.connect('DRIVER={};DBQ={};PWD={}'.format(DRV,MDB,PWD))

这通常工作得很好,但今天停止工作,我想不出为什么。这是我得到的错误:

InterfaceError: ('IM003', '[IM003] 由于系统错误 1114,无法加载指定的驱动程序:动态链接库 (DLL) 初始化例程失败。(Microsoft Access Driver (*.mdb, *.accdb) , C:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\Office16\ACEODBC.DLL). (160) (SQLDriverConnect)')

我认为这与我尝试访问的数据库无关,因为当我尝试从 ODBC 数据源中配置驱动程序时,我也遇到了基本相同的错误:

【问题讨论】:

  • 我也遇到了同样的问题。直到今天,我的代码也运行良好。我想知道是否涉及 Windows 更新?
  • 我尝试从本周早些时候回滚 Windows 更新,但这对我来说没有任何改变。完全不知所措……非常接近核恢复出厂设置路线

标签: python ms-access pyodbc


【解决方案1】:

我遇到了同样的问题!我通过卸载驱动程序并从https://www.microsoft.com/en-us/download/details.aspx?id=54920重新安装它来修复它。

当我第一次尝试重新安装时,它抱怨“您无法安装 32 位版本的访问,因为您当前安装了 64 位 Office 产品”并要求我卸载 Office 16 点击即可-运行可扩展性组件 64 位注册。所以我按照here 的指示卸载了它,然后安装了驱动程序。我的程序又运行了!

不知道为什么会这样。也许更新以某种方式搞砸了?谁知道。希望它对你有用!

【讨论】:

  • 谢谢!对我也有用,但一定要先卸载驱动程序,这让我很头疼。
【解决方案2】:

更容易修复。设置 -> 添加/删除程序 -> 选择“Microsoft Access 数据库引擎”,然后选择修改。

调出安装程序,然后选择重新安装。

为我工作:)。

【讨论】:

    【解决方案3】:

    遇到了完全相同的问题。

    使用了多年的 ODBC 应用程序突然停止工作。在 VS 2015 中运行调试时,显示为“加载程序锁定”异常。如果托管异常处理程序被禁用,它仍然拒绝运行,只显示一个消息框,显示“操作系统未配置为运行此应用程序”。必须通过任务管理器杀死应用程序。

    在使用 \Windows\SysWow64\odbcad32.exe 来“查看”安装的 ODBC 驱动程序时得到了同样的结果。

    我做了同样的事情; MS Access 数据库引擎 --> 修改 --> 重新安装 --> 重新安装

    问题解决了。

    我想它会在下次“更新”Office 时回来......?非常感谢,微软!

    【讨论】:

      【解决方案4】:

      ACEODBC.dll 似乎被破坏了:

      我在注册表中找到:

      REGEDIT4

      [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Microsoft 访问驱动程序(*.mdb、*.accdb)] "驱动程序"="C:\Program Files (x86)\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\Office16\ACEODBC.DLL" "Setup"="C:\Program Files (x86)\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\Office16\ACEODBC.DLL"

      我将以下 2 个注册表项恢复为旧 JET 版本:(这不是一个很好的解决方案,但它是唯一为我解决问题的解决方案)。

      REGEDIT4

      [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Microsoft 访问驱动程序(*.mdb、*.accdb)] "设置"=hex(2):25,57,49,4e,44,49,52,25,5c,73,79,73,74,65,6d,33,32,5c,6f,64,62 ,
      63,6a,74,33,32,2e,64,6c,6c,00 "驱动程序"=hex(2):25,57,49,4e,44,49,52,25,5c,73,79,73,74,65,6d,33,32,5c,6f,64,62 ,
      63,6a,74,33,32,2e,64,6c,6c,00

      基本上是回到'%WINDIR%\system32\odbcjt32.dll'

      我的症状是 ODBC 在“REPAIR_DB”语句上执行。 SQL 调用将完全挂起程序

      【讨论】:

      • 请更正答案的格式以提高可读性。
      猜你喜欢
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多