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

使用sqlite ODBC driver执行ATTACH后SELECT无结果的问题求助

SQLite ODBC驱动ATTACH后执行SELECT的问题解决

问题背景

我使用sqlite ODBC驱动,想通过ATTACH语句关联两个数据库来获取联合数据。但执行SQL语句attach 'my.db' as mydb; select 1时,驱动没有返回任何数据;而执行select 2;attach 'my.db' as mydb; select 1时,驱动正确提示“仅允许一条SQL语句”。查看驱动源码发现有个checkddl()函数用来分析请求是否包含DDL语句,想问下有没有人成功用这个驱动在ATTACH之后执行SELECT?

可行解决方案

有不少开发者遇到过相同问题,最稳妥的解决方式是拆分语句分别执行:

  • 第一步单独执行DDL语句:attach 'my.db' as mydb;,这一步驱动会完成数据库挂载,虽然无数据返回,但操作已生效;
  • 第二步单独执行查询语句:select 1;,此时就能正常获取查询结果。

问题原因

该ODBC驱动的checkddl()函数会将ATTACH判定为DDL操作。当DDL语句与SELECT语句写在同一条请求中时,驱动仅会处理DDL部分,不会执行后续的SELECT,也不会抛出错误;但如果SELECT语句在前、DDL语句在后,驱动会直接检测到多语句违规并报错。

另外,也可以尝试升级到驱动的最新版本,部分后续更新可能优化了多语句的处理逻辑,但拆分执行是兼容性最好的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:20:16