Ruby `prepare':错误:准备好的语句“should_insert”已经存在(PG::DuplicatePstatement)

Posted

技术标签:

【中文标题】Ruby `prepare\':错误:准备好的语句“should_insert”已经存在(PG::DuplicatePstatement)【英文标题】:Ruby `prepare': ERROR: prepared statement "should_insert" already exists (PG::DuplicatePstatement)Ruby `prepare':错误:准备好的语句“should_insert”已经存在(PG::DuplicatePstatement) 【发布时间】:2015-12-22 15:35:22 【问题描述】:

我看过链接

How to fix PG::DuplicatePstatement: ERROR?

但它仍然没有解决我收到的错误消息

`prepare': ERROR:  prepared statement "should_insert" already exists (PG::DuplicatePstatement)

我应该把上面链接中答案中的代码块放在哪里?我必须调用方法才能执行吗?

db_connection = PGconn.connect("localhost", 5433, '', '', "dev_ddb", "user", "pass")

db_connection.prepare('should_insert', 'SELECT COUNT(*) from users where user_id = $1')

【问题讨论】:

我在名为 pg_init.rb 的配置文件夹中创建了一个新的初始化程序,并将代码放在上面的“如何修复...”链接中。但是,它仍然给我同样的错误。我的代码在一个名为 app.rb 的文件中,我正在使用 ruby​​ app.rb 对其进行测试。不确定这是否会有所不同。 【参考方案1】:

我能够通过取消分配准备好的语句来完成这项工作。我在 exec_prepared 语句之后插入了这一行。

db_connection.exec("DEALLOCATE should_insert")

【讨论】:

以上是关于Ruby `prepare':错误:准备好的语句“should_insert”已经存在(PG::DuplicatePstatement)的主要内容,如果未能解决你的问题,请参考以下文章

限制最大准备好的语句计数

PREPARE - 创建一个准备好的查询

使用 PDO 准备好的语句 MySQL 错误

如何使用mysqli准备好的语句?

准备好的语句何时失败?

1615 准备好的语句需要在codeigniter中重新准备