Rspec Mysql2::错误:保存点 active_record_1 不存在:回滚到保存点 active_record_1

问题描述 投票:0回答:0

我已经将我的 ruby on rails 应用程序从 rails 3 升级到 rails 5.2.8 版本。在我的测试用例中,我试图在列中保存 1 兆字节的值。请参阅下面的测试用例。

  context "validates value" do
    it "validation size upto 2 megabytes" do
      @template_schedule_data.value = "A" * 1.megabyte
      expect(@template_schedule_data.save).to eq(true)
    end
  end

这个测试用例在 rails 3 版本中通过,但在 rails 5.2.8 版本中它有时通过,有时失败并出现以下错误。

ActiveRecord::StatementInvalid: Mysql2::错误:SAVEPOINT active_record_1 不存在:ROLLBACK TO SAVEPOINT active_record_1 /usr/local/bundle/gems/mysql2-0.5.5/lib/mysql2/client.rb:151:in

_query' /usr/local/bundle/gems/mysql2-0.5.5/lib/mysql2/client.rb:151:in 
查询块' /usr/local/bundle/gems/mysql2-0.5.5/lib/mysql2/client.rb:150:in
handle_interrupt' /usr/local/bundle/gems/mysql2-0.5.5/lib/mysql2/client.rb:150:in 
query' /usr/local/bundle/gems/ar-octopus-0.10.2/lib/octopus/abstract_adapter.rb:13:in `instrument'

知道为什么会这样吗?如果我尝试分配像三个或四个字符这样的小值,那么这个错误就不会出现。

ruby-on-rails rspec ruby-on-rails-5
© www.soinside.com 2019 - 2024. All rights reserved.