在查询的任何表中都找不到列 ( )(或 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的主要内容,如果未能解决你的问题,请参考以下文章
带有 Docker 的 Rails '在任何资源中都找不到 ...' 用于现有的 gem
在以下任何来源中都找不到插件 [id: 'org.sonarqube', version: '2.8']:
在以下任何来源中都找不到插件 [id: 'org.springframework.boot', version: '2.2.4.RELEASE']: