Duk*_*ver 22 mysql activerecord ruby-on-rails
完整的错误是
ActiveRecord::StatementInvalid: Mysql2::Error: SAVEPOINT active_record_1 does not exist: ROLLBACK TO SAVEPOINT active_record_1
Run Code Online (Sandbox Code Playgroud)
每当我尝试创建一个新的ActiveRecord对象时,我正在编写单元测试并收到此错误 - 但仅在某个点之后.这些行发生在以下行之后:
ActiveRecord::Base.connection.execute "DROP TABLE IF EXISTS foo"
ActiveRecord::Base.connection.execute "CREATE TABLE foo (id INTEGER PRIMARY KEY)"
Run Code Online (Sandbox Code Playgroud)
(如果测试成功,表'foo'将填充数据)
在上面的行之前,我可以写一些类似的东西
User.create(email => 'foo@bar.com')
Run Code Online (Sandbox Code Playgroud)
一切正常.但是,如果我在调用ActiveRecord :: Base.connection.execute之后尝试编写上面的行,那么我会得到上面描述的SAVEPOINT错误.我也尝试将我的执行语句放在一个事务中,但这没有帮助.我很难过.
仅供参考 - 我正在使用Rails 3.2.8
awa*_*age 21
您正在使用Mysql DDE语句(create/drop/truncate table),这将导致隐式提交.
由于隐式提交,将删除当前事务的所有保存点(请参阅上面的文档).
要解决此问题,您可以关闭事务并使用DatabaseCleaner(截断模式).
小智 7
解决这个问题..
config.use_transactional_fixtures = false
| 归档时间: |
|
| 查看次数: |
12956 次 |
| 最近记录: |