- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
完整的错误是
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/
如果用户不按提交按钮,我会使用 ajax 请求从页面处理数据库事务,而不是回滚由 ajax 请求完成的所有 sql 事务(我将管理这个,但如果刷新当前页面,当前遵循的逻辑不起作用) . 我已经尝试了下
我正在尝试了解 SQLite 中的保存点和事务。 我在表/数据库上有以下命令,我正在使用保存点。 SAVEPOINT aaa; RELEASE aaa; BEGIN; 现在,如果我一次执行上述所有语句
是否可以使用 CASE 来ROLLBACK TO SAVEPOINT?我的查询是 BEGIN; SAVEPOINT my_savepoint; INSERT INTO DPoint (uuid) VA
我在运行创建新配置文件的 PHPUnit 测试时遇到问题,我的代码不允许重复 profile_name,因此每次运行测试时我都必须手动更改它。我实际上想过在测试运行之前创建一个保存点,然后在测试结束时
我在共享主机计划上运行一个小型 Web 应用程序。我有一个包含无限循环的“工作函数”;循环检查数据库中的任务队列以查找新的任务。这需要使用 @transaction.commit_manually 来
根据 ZODB documentation : A savepoint allows a data manager to save work to its storage without commit
我正在尝试使用 MySQL 中的保存点,但似乎出了点问题。 MySQL transaction conundrum 我收到如下所示的错误: ERROR 1305 (42000): SAVEPOINT
我正在尝试设置一个保存点,并在遇到问题时回滚到该点。但我收到以下消息: SQL execution error, ORA-01086: savepoint 'LASTSAVE' never estab
database.RunInTransaction(() => { if (dbVersion {
我有一个已运行近 24 小时的保存点。它会导致其他问题,例如长时间运行的查询会同时刷新物化 View 。 有没有办法知道哪个查询导致了 RELEASE SAVEPOINT 在idle in trans
我的 MYSQL 数据库中有此 SQL(存储过程为空,所以我猜没有隐式提交?)。 DROP PROCEDURE IF EXISTS doOrder; DELIMITER $$ CREATE PROCE
完整的错误是 ActiveRecord::StatementInvalid: Mysql2::Error: SAVEPOINT active_record_1 does not exist: ROLL
有时我在 TortoiseSVN 提交时收到以下错误: Commit succeeded, but other errors follow: Error bumping revisions post-
我正在尝试创建一个 knex 迁移。迁移应该是一个事务,应该向数据库添加 Angular 色和一些用户。如果用户已经在数据库中,事务应该将他们的 role_id 更改为新的 role_id expor
类用户{ public static void main(String arg[]) throws SQLException { Connection con = DBConnect.getC
有趣的是,它也适用于 shell。 [MY code which calls Model.objects.get_or_create(...)] File "/usr/lib/python2
当一个人测试系统时,不会发生这些错误。但是通过 jmeter 测试,我可以非常可靠地重现一些错误: ActiveRecord::JDBCError: SAVEPOINT active_record_1
在 django 1.5 天,如果我想手动管理事务(或事务中的事务),我会这样做: @transaction.commit_manually def my_method(): master_s
我正在尝试使嵌套的 transaction.atomic() 工作。以下代码块在第一次退出时崩溃 transaction.atomic() 并出现以下错误 MySQLdb._exceptions.Op
我正在使用 Python apsw 绑定(bind)来处理 SQLite 数据库。代码如下: with apsw.Connection(path) as t: c = t.cursor()
我是一名优秀的程序员,十分优秀!