使用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
相关产品推荐
相关产品推荐

