【问题标题】:postgresql syntax error and then the cursor is openpostgresql 语法错误然后游标打开
【发布时间】:2017-02-04 09:18:18
【问题描述】:

这个错误“光标打开”花了我几个小时才解决,所以我在这里提交解释,以便为遇到同样问题的人提出解决方案。

问题描述:试图通过标准函数 SQLEXEC 从 postgreSQL 获取数据引发“语法错误”,而同一查询在 PGAdmin 上正确运行。此外,后续查询系统地提出“光标已打开”(每次都需要终止 Postgres 进程并重新启动 VFP 连接)。

条件:Postgres 9.3.3、Windows XP SP2、PostgreSQL ODBC Driver(UNICODE) 9.02.01.00 版、Visual FoxPro 9 SP1

解决方案:SQLExec 第三个参数不应包含点(“.”)。例如,命令 SQLExec(1, 'Select 1', '.F.') 会引发问题,而 SQLExec(1, 'Select 1', 'F') 不会。

在我的情况下,'.F.'值是通过程序生成的,这使得诊断变得困难。

【问题讨论】:

  • 你确定 Postgres 6.3.3 吗?
  • 从来没有在 Windows 上运行的 Postgres 6.x。第一个支持 Windows 的 Postgres 版本是 8.0
  • 抱歉,我说的是 Postgres 9.9.3。现在已更正

标签: postgresql odbc runtime-error visual-foxpro


【解决方案1】:

这不是 VFP 错误,而是程序员的错误。第三个参数是结果的游标名称,如文档中所述,游标名称不能有点。 OTOH 'F' 是一个有效的游标名称。

根据语法错误,您很可能试图传递超过 255 个字符的长 sql 字符串文字,但由于我们没有看到您的代码,因此无法确定。在 VFP 中还记录了字符文字的长度不能超过 255。

【讨论】:

  • 在第三个参数中使用点肯定是一个编程错误。但是,“光标已打开”的症状非常令人困惑,并且在这种情况下没有记录。我写这篇文章是为了向有这个问题的人提出一个解释。此信息现已添加到初始帖子中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
相关资源
最近更新 更多