在查询的任何表中都找不到列 ( )(或 SLV 未定义)。 SQLCODE=-217

Posted

技术标签:

【中文标题】在查询的任何表中都找不到列 ( )(或 SLV 未定义)。 SQLCODE=-217【英文标题】:Column ( ) not found in any table in the query (or SLV is undefined). SQLCODE=-217 【发布时间】:2021-10-13 19:44:19 【问题描述】:

我正在读取这样的表格:

query = (
"select mandant,posnr,systemdat,
"lieferbedingung,loeschhafen,bereich," 
"nrkreis_nr from eakopf_t where posnr[10,10] = \" \" and posnr[1,2] not in (\"99\",\"RE\",\"UB\") and mandant <> 999;"
)

df = pd.read_sql(query, engine.connect())

但我收到此错误:

ibm_db_dbi::DatabaseError: SQLNumResultCols failed: [IBM][CLI Driver][IDS/UNIX64] Column ( ) not found in any table in the query (or SLV is undefined). SQLCODE=-217
[SQL: select mandant,posnr,systemdat,lieferbedingung,loeschhafen,bereich,nrkreis_nr from eakopf_t where posnr[10,10] = " " and posnr[1,2] not in ("99","RE","UB") and mandant <> 999;]

是否可以进一步调试导致问题的确切列?因为否则,所有 col 名称似乎都存在于数据集中。

【问题讨论】:

没有给你列名很烦人;应该出现在括号中。您似乎拼错了某些列名。您没有使用任何 SLV(语句局部变量)。 一种可能是您在运行环境中设置了DELIMIDENT,在这种情况下,” “ 将被解释为由一个空格组成的列名。尽管还有其他双引号字符串,但单个空格是第一个,因此将是报告的那个。尝试在字符串周围使用嵌入的单引号。 应该标记为informix 而不是db2? 【参考方案1】:

有点猜想,因为我看不到您的数据库,但是这一行:

posnr[10,10] = " "

对我来说是可疑的。至少在 Postgres 中,双引号表示列名,这会给你这样的错误。我建议用单引号替换任何用于表示字符串的双引号,然后再试一次。即)

posnr[10,10] = ' '

【讨论】:

Informix 允许在字符串周围使用单引号或双引号,除非设置了 DELIMIDENT 环境变量。您使用单引号的建议是明智的,但这次使用双引号(可能)不是问题的原因。

以上是关于在查询的任何表中都找不到列 ( )(或 SLV 未定义)。 SQLCODE=-217的主要内容,如果未能解决你的问题,请参考以下文章

React 在任何根目录中都找不到入口文件

带有 Docker 的 Rails '在任何资源中都找不到 ...' 用于现有的 gem

在任何版本中都找不到 Composer 包

在以下任何来源中都找不到插件 [id: 'org.sonarqube', version: '2.8']:

(或 SLV 未定义) Informix 数据库

在以下任何来源中都找不到插件 [id: 'org.springframework.boot', version: '2.2.4.RELEASE']: