为什么我的查询出现 HY000 pyodbc 错误?

0 投票
2 回答
6710 浏览
提问于 2025-04-17 04:00

我的Sybase查询很简单,比如说:

select adjusted_weight from v_temp_idx_comp where ric_code='0005.HK' and index_ric_code='.HSI'

这个查询能返回所有列的数据,除了一个列——> adjusted_weight。每当我把这个列加到查询里,就会出现以下错误:

pyodbc.Error: 'HY000', 'The driver did not supply an error!')

adjusted_weight这个列的数据类型在表中定义为数字,这个是对的。实际上,当我用其他应用程序(使用不同的驱动)运行这个查询时,能正常返回结果,没有任何错误。只有在用python和pyodbc查询的时候才会出现问题。

我使用的是Windows 7系统,python版本是2.6.1,Sybase驱动是:{Adaptive Server Enterprise}。

我的这个列到底出了什么问题?我该怎么解决这个问题呢?

2 个回答

0

这个错误出现的原因是你在使用一个预编译的pyodbc版本,而这个版本在arm架构的CPU上(比如Mac M1)无法正常工作。解决办法是:这个软件包没有针对arm架构正确编译,你可以先卸载它,比如在我的情况下是pyodbc,然后再重新安装。如果你是用brew来安装的,可以这样做:

pip uninstall pyodb

然后可以通过在本地编译的方式来安装:

pip install --no-binary :all: pyodbc
1

我解决了这个问题。问题出在我查询的视图上。有一列的精度(这个值是通过某些操作自动计算出来的)超过了Sybase标准所支持的范围。有些驱动程序能正确处理这个问题,但有些则不能。Sybase自己提供的驱动程序也没有正确报告错误。

撰写回答