PostgreSQL:错误重用postgresql中的预处理语句

时间:2014-09-19 06:19:26

标签: postgresql odbc postgresql-9.3 psqlodbc

描述:我在使用绑定参数多次执行预准备语句时遇到问题。第一次它执行正确然后重置参数,语句和当我尝试执行相同的准备语句下次失败时给出这样的错误。

详细信息:我正在执行一个带有绑定某些参数的预准备语句,执行后我正在休息预备语句并取消绑定参数。当尝试执行相同的预准备语句时,它会给出错误:" 27:获取数字属性时出错:此类型的ColAttribute尚未实现"。我正在使用libodbc ++库。当我调试它在这一行出错( libodbc ++ 代码行)

行:ResultSet * rs = ODBCXX_OPERATOR_NEW_DEBUG(文件 LINE )ResultSet(this,hstmt_,hideMe);

错误:" 27:获取数字属性时出错:此类型的ColAttribute尚未实现"

您正在运行的PostgreSQL版本号:

如何安装PostgreSQL:PostgreSQL 9.3.5,由Visual C ++ build 1600,64位编译

对postgresql.conf文件中的设置所做的更改:否

操作系统和版本:Windows 8.1(64位)

您使用什么程序连接到PostgreSQL:ODBC 3.5(libodbc ++)库

PostgreSQL服务器日志中是否有任何相关或不寻常的内容?:否

有关任何错误的问题:

错误发生时您正在做什么/如何导致错误:" 27:获取数字属性时出错:此类型的ColAttribute尚未实现"

谢谢&问候 巴拉克里希

1 个答案:

答案 0 :(得分:0)

问题在于libodbc ++如何处理参数和查询。有两种方法可以解决这个问题:

 1. Upgrade the libodbc++ to use 7.4(V3) protocol.
 2. If you are using old libodbc++, then change disable the UseServerSidePrepare parameter in odbc configuration files.
odbc配置中对UseServerSidePrepare = 0的

说明

  

psqlodbc控制的不仅仅是使用未命名还是命名   计划在服务器中。使用UseServerSidePrepare = 0,参数为   在驱动程序中完全处理,用参数标记替换   查询本身的值。

注意:可能存在UseServerSidePrepare = 1的应用程序 性能受到打击,特别是在与< 9.2服务器。 它仍然是一个更好的默认恕我直言,如果你不得不,你仍然可以关闭它。

PS :我知道问题是在几年前被问到的,但我最近遇到了同样的问题,并且实际上工作的资源非常少。