我已经将我的 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'
知道为什么会这样吗?如果我尝试分配像三个或四个字符这样的小值,那么这个错误就不会出现。