gpt4 book ai didi

mysql - ActiveRecord 错误 : SAVEPOINT active_record_1 does not exist

转载 作者:IT老高 更新时间:2023-10-28 23:49:50 30 4
gpt4 key购买 nike

完整的错误是

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 错误。我也尝试将我的执行语句放在事务中,但这没有帮助。我被难住了。

仅供引用 - 我使用的是 Rails 3.2.8

最佳答案

您正在使用 Mysql DDE 语句(创建/删除/截断表),这将导致 implicit commit .

由于隐式提交,当前事务的所有保存点都被删除(引用上述文档)。

要解决这个问题,您可以 turn off transactions并使用 DatabaseCleaner (截断模式)。

关于mysql - ActiveRecord 错误 : SAVEPOINT active_record_1 does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13161394/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com