完整的错误是
ActiveRecord::StatementInvalid: Mysql2::Error: SAVEPOINT active_record_1 does not exist: ROLLBACK TO SAVEPOINT active_record_1
每当我尝试创建一个新的 ActiveRecord 对象时,我正在编写一个单元测试并得到这个错误——但只有在某个点之后。这发生在这些行之后:
ActiveRecord::Base.connection.execute "DROP TABLE IF EXISTS foo"
ActiveRecord::Base.connection.execute "CREATE TABLE foo (id INTEGER PRIMARY KEY)"
(如果我的测试成功,表 'foo' 将填充数据)
在上述几行之前,我可以写一些类似的东西
User.create(email => 'foo@bar.com')
一切正常。但是,如果我在调用 之后尝试编写上述行ActiveRecord::Base.connection.execute
,那么我会得到SAVEPOINT error
上述内容。我也尝试将我的执行语句放在事务中,但这没有帮助。我难住了。
仅供参考 - 我正在使用 Rails 3.2.8