首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSpec、Spork和Postgres错误:已准备好的语句“a1”已存在

RSpec、Spork和Postgres错误:已准备好的语句“a1”已存在
EN

Stack Overflow用户
提问于 2012-12-14 00:32:31
回答 2查看 1.7K关注 0票数 2

在我们的PostgreSQL支持的Rails项目中,当使用spork运行rspec时,有时我们会收到以下错误:

代码语言:javascript
复制
ActiveRecord::StatementInvalid:
   PG::Error: ERROR:  prepared statement "a1" already exists

最初,它每天只发生几次,但最近,它开始每3-4次测试运行一次,这会使我们的开发工作变得缓慢。

有没有办法在spec_helper.rb文件中的某个地方重置/删除PostgreSQL中的准备好的语句?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-14 00:32:31

在搜索了PostgreSQL docs并在spec_helper.rb中的不同位置对其进行了大量的试验和错误测试后,我最终发现可以添加以下代码来删除所有现有的准备好的语句,此后我再也没有看到这个错误:

代码语言:javascript
复制
RSpec.configure do |config|
  # ... other code

  config.after(:suite) do
    ActiveRecord::Base.connection.execute("DEALLOCATE ALL")
  end

  # ... other code
end
票数 2
EN

Stack Overflow用户

发布于 2013-01-11 11:24:21

如果您正在执行以下操作,则可以获得此结果:

代码语言:javascript
复制
  class ActiveRecord::Base
    mattr_accessor :shared_connection
    @@shared_connection = nil
    def self.connection
      @@shared_connection || retrieve_connection
    end
  end
  ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection

(这是推荐的here)。

如果你有它或类似的东西,试着删除它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13864286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档