You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PYODBC连接旧版Access .mdb文件报错-1019的解决方法咨询

你遇到的报错:

[ODBC Microsoft Access Driver] Cannot open a database created with a previous version of your application. (-1019)

核心原因是2013及之后版本的Access、以及64位的Access ODBC驱动,均已取消对Access 97、Access 2000/2003等2010之前版本创建的.mdb文件的原生支持。可根据使用需求选择以下两类解决方案:

解决方案

方案1:一次性批量转换旧文件格式(适合长期使用)

  • 准备32位版本的Access 2010,或免费的32位Access 2010运行时,仅用该版本打开旧.mdb文件
  • 打开后选择「文件」-「另存为」,选择「Access 2010数据库(.accdb)」或者兼容2010的.mdb格式保存
  • 转换完成后的文件可直接被Access 2019、64位ODBC驱动、PYODBC正常访问,不会再出现版本报错
  • 有大量文件需要转换时,可使用VBA脚本批量处理,核心逻辑参考:
Sub BatchConvertMDB()
    Dim strSourcePath As String, strTargetPath As String
    Dim strFile As String
    Dim appAccess As Access.Application
    Set appAccess = New Access.Application
    ' 替换为实际旧文件目录和转换后输出目录
    strSourcePath = "C:\Old_MDB_Path\"
    strTargetPath = "C:\Converted_Output_Path\"
    strFile = Dir(strSourcePath & "*.mdb")
    Do While strFile <> ""
        appAccess.OpenCurrentDatabase strSourcePath & strFile
        appAccess.ConvertAccessProject _
            SourceFilename:=strSourcePath & strFile, _
            DestinationFilename:=strTargetPath & Replace(strFile, ".mdb", ".accdb"), _
            DestinationFileFormat:=acFileFormatAccess2010
        appAccess.CloseCurrentDatabase
        strFile = Dir
    Loop
    Set appAccess = Nothing
End Sub

方案2:保留原.mdb文件,调整访问环境(适合临时读取需求)

  • 卸载现有64位Python,安装对应版本的32位Python
  • 安装32位版本的Access ODBC驱动(可随32位Access 2010运行时一同安装)
  • 修改PYODBC连接字符串的驱动标识,替换你当前使用的{Microsoft Access Driver (*.mdb, *.accdb)}为32位旧版驱动标识{Microsoft Access Driver (*.mdb)},即可正常读取旧版.mdb文件
  • 注意:该方案下无法兼容64位Python依赖包,如有64位依赖需求优先选择方案1

内容的提问来源于stack exchange,提问作者Foggy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:06:02