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

Python使用fdb连接Firebird数据库出现WinError 193错误求助

解决Python fdb连接Firebird时的WinError 193问题

问题分析

WinError 193报错「%1 不是有效的Win32应用程序」,核心诱因主要有两个:

  • Python与Firebird客户端库(fbclient.dll)位数不匹配(比如64位Python加载32位fbclient,或反之)
  • 数据库路径的转义字符处理错误,导致实际路径解析异常

修复步骤

1. 修正数据库路径的转义问题

你的代码里DSN路径使用单反斜杠,Python会将\A、\W这类字符解析为转义序列,导致实际路径错误。两种修正方式:

  • 使用双反斜杠:
con = fdb.connect(dsn='C:\\AKINSOFT\\Wolvox8\\Database_FB\\SIRKET.FDB', user='sysdba', password='masterkey')
  • 使用原始字符串(在字符串前加r):
con = fdb.connect(dsn=r'C:\AKINSOFT\Wolvox8\Database_FB\SIRKET.FDB', user='sysdba', password='masterkey')

2. 匹配Python与fbclient.dll的位数

这是WinError 193最常见的原因:

  • 若使用64位Python,必须搭配64位Firebird客户端,确保fbclient.dll是64位版本;
  • 若使用32位Python,则对应使用32位Firebird客户端。

验证与配置方法:

  • 查看Python位数:打开命令行输入python -c "import sys; print(sys.maxsize > 2**32)",返回True为64位,False为32位;
  • 下载对应位数的Firebird客户端,将fbclient.dll放到以下位置之一:
    • Python安装目录的Scripts文件夹;
    • 系统System32(64位)或SysWOW64(32位)目录;
    • 在fdb.connect时通过library参数直接指定dll路径:
      con = fdb.connect(
          dsn=r'C:\AKINSOFT\Wolvox8\Database_FB\SIRKET.FDB',
          user='sysdba',
          password='masterkey',
          library=r'C:\Program Files\Firebird\Firebird_3_0\bin\fbclient.dll'  # 替换为你的实际路径
      )
      

3. 额外检查项

  • 确认Firebird服务处于运行状态;
  • 确保SIRKET.FDB文件存在,且Python进程拥有读取权限;
  • 检查fdb库版本与Firebird服务器版本兼容(比如Firebird 3.x需搭配较新版本的fdb)。

完整修正代码示例

import fdb

def main():
    # 用原始字符串避免转义,同时指定对应位数的fbclient.dll路径
    con = fdb.connect(
        dsn=r'C:\AKINSOFT\Wolvox8\Database_FB\SIRKET.FDB',
        user='sysdba',
        password='masterkey',
        library=r'C:\Program Files\Firebird\Firebird_3_0\bin\fbclient.dll'
    )
    # 执行测试查询验证连接
    cursor = con.cursor()
    cursor.execute("SELECT * FROM RDB$DATABASE")
    print(cursor.fetchone())
    con.close()

if __name__ == '__main__':
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:55:20