问题标签 [autocommit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
446 浏览

spring - Spring JNDI 配置


我们正在使用 Spring 为我们的数据访问需求进行 JNDI 查找。我们正在调用多个存储过程(在 Sybase 中)。我想要一种在调用这些存储过程时控制事务的自动提交属性的方法。我能够使用 BasicDataSource(属性名称 =“defaultAutoCommit”)来实现它。
但是当我们转向进行 JNDI 查找(来自 Weblogic)时,我陷入了困境。


经过几天的研究,在我看来,我可以使用 JtaTransactionManager。但是,我不确定是否可以使用事务管理器在每个过程调用的基础上配置自动提交(由于不同过程的不同链式/非链式模式要求)。有没有一种干净的方法来实现这一目标?谢谢

0 投票
1 回答
202 浏览

php - 当自动提交关闭时,是否可以使用第一个 MySQL 选择的值作为第二个条件?

首先,我仍在学习如何使用 PHP/MySQL ......所以在选择时或仅在插入/更新时是否可以使用事务?

如果可能,那么我将如何解决这个问题(伪代码):

关闭自动提交

从身份验证中选择 id,其中别名 = [用户输入]

从 id = ID FROM ABOVE SELECT 的标志中选择活动

如果:没有错误提交

其他:回滚

从第二个选择中获取行


以上是否可能与MySQL(请使用PHP语法)有关?

0 投票
1 回答
4879 浏览

mysql - Mysql 提交有时需要几分钟才能完成

我已经有这个问题超过 1 周了。我已经解决了其他人在 stackoverflow 上遇到的类似问题。我正在运行 Mysql 5.6.10。

  1. “查询结束”步骤在随机时间很长
  2. UPDATE 语句处于“查询结束状态”
  3. MySQL中有很多“查询结束”状态,所有连接都在几分钟内使用

它随机发生。但是每 5 分钟左右,提交就会花费很长时间。并且事务插入的大小通常在 1-2000 行左右。

我一直在更改设置,我有点失去它我决定在这里创建一个问题。

我的插入/更新是由我的程序生成的 sqlfile。然后我有一个 Windows 服务,每 1.5 分钟运行一次处理文件。我在事务模式下构建了许多 sql 文件的字符串。5 次中有 4 次运行非常顺畅,但 5 次中有 1 次会卡住。

它通常发生在同一张表上,并且大多数时候它与插入有关,但也发生在更新上。所以我怀疑它与我的表格结构有关,但在解决之前你永远不会知道:)

这是表结构

这些是“显示变量”

这是显示状态

我尝试了所有不同的 innodb_flush_log_at_trx_commit 设置。我确定我的查询是最佳的,因为它们偶尔会运行得非常快,我几乎可以肯定这与我的冲洗有关。我也尝试禁用自动提交,但它仍然发生。查询缓存被禁用。但任何想法都非常受欢迎。也许我的磁盘太慢了?

该系统未投入生产,因此我可以重新启动它并测试任何建议。

请让我知道我是否可以提供更多详细信息。

0 投票
2 回答
6412 浏览

java - 在 NamedParameterJdbcTemplate.batchUpdate 中禁用自动提交

我正在使用 对我的数据库表进行批量更新NamedParameterJdbcTemplate.batchUpdate,但我想禁用auto-commit并手动执行提交。

我可以从对象设置自动提交模式,但不知道如何使用对象connection来做同样的事情。NamedParameterJdbcTemplate

0 投票
0 回答
79 浏览

jdbc - 当 jdbc autocommit 为 false 时是否可以只提交部分 SQL

假设在一个大型的旧 Java 应用程序中,JDBC 的自动提交设置为 false。在现有事务的中间,我添加了一些新逻辑并执行新的 sql 语句,例如,

问题是,我不想打破旧的事务控制(它有自己的COMMITs和ROLLBACKs),我只需要提交新的sql语句A,可以吗?

0 投票
0 回答
686 浏览

sqlite - python的sqlite3.executemany:在单个事务中更改表?锁定错误

我有一个应用程序,我在任何地方都使用 sqlite3 的自动提交功能,这通常可以正常工作。该应用程序包括一个数据库方案更新程序。

基本上它只是每个版本升级的一组 SQL 命令,应该在单个事务中调用。我通过使用 .executemany() 调用实现了这一点,该调用一直有效。现在是第一次,我想使用这种方法更改表描述(我做了一个简短的示例,因为原始表相当大):

考虑到

我不是在这里谈论索引,没有问题是一样的:)

我尝试在单个 executemany() 中运行的是:

即使我将 DROP 移动到第二个 executemany() 调用,它也不起作用。我必须重新启动我的应用程序才能 DROP。

据我了解, executemany() 为我处理 BEGIN TRANSACTION ... COMMIT 东西。我想念什么?

提前感谢,国王问候,弗洛里安。

0 投票
1 回答
1159 浏览

hibernate - 单个命令的休眠自动提交为真

Hibernate 自动将 autocommit 设置为 false,甚至建议不要将其设置为 true。

我发现自己需要将单个数据库命令的 autocommit 设置为 true(我想将“VACUUM”发送到我的 postgresql 数据库,这需要将 autocommit 设置为 true),但我希望将 autocommit 设置为(如推荐的那样)其他一切都是假的。

我似乎找不到任何方法来以编程方式为单个会话更改自动提交设置。

-- 我需要为这个操作单独配置一个配置/会话工厂吗?

谢谢。

0 投票
1 回答
433 浏览

php - MySQLi 事务意大利面地狱

我有一堂课,里面有一百多个函数/方法。其中许多需要在事务中运行 MySQLi 查询。所以,在一个简单的形式中,大多数函数看起来像这样:

这个概念很简单:每次我运行一个公共函数/方法时,它都会启动一个事务并在结束函数/方法之前提交。现在,我的问题是......如果我想在另一个方法中运行一个方法,同时保持两个方法都是公开的并且可以被类外的调用者调用怎么办?例如:

使用额外的变量进行手动 if/else 检查,我想我可以用两个函数解决上述问题。但是,我的问题是我有多个(可能将近一百个)功能/方法与上述类似。我不认为我可以使用一些 if/else 来处理如此复杂的事务意大利面地狱问题。

我该如何解决这个问题?

PS:

以上只是我的课程的简化。为了让事情变得更加复杂,在我的课堂上我不只是使用:

相反,我做了这样的事情:

这将允许我的类中的函数/方法启动事务,提交事务并将自动提交状态返回到之前。这确实很笨拙,但我希望我班的用户可以选择是否在课外使用事务/提交。我希望这种方法在使用我的任何类的方法之前不会影响他们原始的自动提交状态。

更新

我在类中添加了以下属性和两个函数:

所以,现在当我想运行原始函数时,我可以这样做:

只要我提交所有事务,如果我在任何方法中启动任何事务,非最终的 $this->commitTransaction() 将不会运行真正的 mysqli->commit(),但最终的 $this->commitTransaction() 将运行mysqli->commit 如有必要(取决于在我的类中第一次运行任何方法之前的初始状态)。所以如果我想运行:

或者

,这根本不重要,因为有一个堆栈来计算我会开始的事务。然而,实际上,只有一个事务要启动和提交。

这可以解决我上面的问题吗?

0 投票
8 回答
46391 浏览

mysql - 使用 MySQL 时在 SQL Developer 中禁用自动提交

我想使用 Oracle SQL Developer 连接到 MySQL 服务器,但禁用了自动提交。默认情况下,所有 MySQL 连接都启用了自动提交,这很奇怪。

SQL Developer 中的全局设置未选中,并且

导致错误

设置自动提交脚本命令强制关闭,因为连接级别自动提交已打开。

在连接的设置中,除了主机名、端口和用于数据库选择的下拉框外,没有其他选项。

我正在使用带有最新 JDBC 连接器 5.1 的 SQL Developer 3.2.10。

0 投票
2 回答
8832 浏览

sql - postgresql 触发器:禁用自动提交并设置隔离级别

我正在数据库上编写一个触发器 INSTEAD OF INSERT ON 一个表,它进行了一些操作,然后将数据插入到不同的相关表中。现在我需要禁用自动提交并在触发器内设置不同的隔离级别,我该怎么办?