问题标签 [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 投票
8 回答
42903 浏览

java - 大对象不能在自动提交模式下使用

我有一个在 PostgreSQL 数据库上使用 Hibernate 的 Spring 应用程序。我正在尝试将文件存储在数据库的表中。它似乎将行与文件一起存储(我只是在 EntityManager 上使用 persist 方法),但是当从数据库加载对象时,我得到以下异常:

为了加载数据,我使用了 MultipartFile 瞬态属性,并在其设置器中设置了我想要保留的信息(字节 []、文件名、大小)。我坚持的实体看起来像这个(我省略了其余的 getter/setter):

我可以看到,当它被持久化时,我在行中有数据,但是当我调用这个方法时它失败了:

此方法仅在结果包含带有文件的对象时才会失败。我试图在我的 persistence.xml 中设置

但这并不能解决问题。

一般来说,应用程序运行良好,它只在事务完成时提交数据,如果出现故障,它会执行回滚,所以我不明白为什么会发生这种情况。

任何的想法?

谢谢。

更新

查看 Shekhar 给出的链接,建议将调用包含在事务中,因此我在事务中设置了服务调用,它可以工作(我添加了 @Transactional 注释)。

问题是我不想保留任何数据,所以我不明白为什么它应该包含在事务中。当我只从数据库中加载一些数据时,提交是否有意义?

谢谢。

0 投票
2 回答
3110 浏览

mysql - 在 Django 程序中的数百个 MySQL UPDATE 语句期间禁用自动提交

在 Django 程序中,如何在数百个 UPDATE 之前显式禁用自动事务管理并在 UPDATE 完成后启用它?

我查看了http://docs.djangoproject.com/en/dev/topics/db/transactions/但没有找到任何线索。

我试着把下面的代码放在开头

我也试过

以上两种方法都没有提高更新速度。上面的代码有什么问题吗?

0 投票
2 回答
6153 浏览

mysql - 将 AutoCommit 设置为 0 的 DBI 数据库句柄未通过 SELECT 返回正确的数据?

这是一个难以解释的问题(而且非常奇怪),所以请耐心等待。我将解释问题及其解决方法,但我想看看是否有人可以解释为什么它会以这种方式工作:)

我有一个使用 mod_perl 的 Web 应用程序。它使用 MySQL 数据库,我定期将数据写入数据库。它是模块化的,因此它也有自己的“数据库”类型的模块,我在其中处理连接、更新等。database::db_connect() 子例程用于连接数据库,并AutoCommit设置为 0。

我制作了另一个 Perl 应用程序(独立守护程序),它定期从数据库中获取数据,并根据返回的数据执行各种任务。我在其中包含了 database.pm 模块,因此我不必重写/复制所有内容。

我遇到的问题是:

应用程序在启动时连接到数据库,然后永远循环,每隔 X 秒从数据库中获取数据。但是,如果数据库中的数据被更新,我的应用程序仍然会返回“旧”数据,这是我在与数据库的初始连接/查询时获得的。

例如 - 我有 3 行,并且列“名称”具有值 'a'、'b' 和 'c' - 对于每条记录。如果我更新其中一行(例如,从命令行使用 mysql 客户端)并将名称从 'c' 更改为 'x',我的独立守护程序将无法获取该数据 - 它仍然会从返回的 a/b/c mysql。我用 tcpdump 捕获了数据库流量,我可以肯定地看到 MySQL 确实在返回该数据。我也尝试过将 SQL_NO_CACHE 与 SELECT 一起使用(因为我不确定发生了什么),但这也无济于事。

然后,我修改了独立守护程序中的数据库连接字符串,并将其设置AutoCommit为 1。突然,应用程序开始获取正确的数据。

我很困惑,因为我认为 AutoCommit 只影响 INSERT/UPDATE 类型的语句,而对 SELECT 语句没有影响。但它似乎确实如此,我不明白为什么。

有谁知道为什么 SELECT 语句在AutoCommit设置为 0 时不会从数据库返回“更新的”行,以及为什么在AutoCommit设置为 1 时它会返回更新的行?

这是我在独立守护程序中使用的简化(取出错误检查等)代码,它不返回更新的行。

更改AutoCommit为 1 可以解决此问题。为什么?

谢谢 :)

PS:不确定是否有人在乎,但 DBI 版本是 1.613,DBD::mysql 是 4.017,perl 是 5.10.1(在 Ubuntu 10.04 上)。

0 投票
1 回答
4230 浏览

perl - postgresql 连接和设置自动提交关闭

我正在使用 perl 进行编程,并且与我的 postgres 数据库有一个现有的连接(以编程方式)。建立连接后,我不控制连接代码,我想将自动提交设置为关闭。

如何做到这一点?当我以交互方式进行操作时,我看不到任何变化。我 \set autocommit off 然后进行插入,我看到了变化。我做了一个回滚,我得到不存在事务。

我想关闭自动提交,做我的工作然后提交。如何通过现有连接实现这一目标?

谢谢礼萨

0 投票
5 回答
19484 浏览

python - 为什么 SQLite3 不需要 commit() 调用来保存数据?

我在某处读到,要在 Python 中将数据保存到 SQLite3 数据库,commit应该调用连接对象的方法。然而我从来不需要这样做。为什么?

0 投票
2 回答
1369 浏览

mysql - 在 mysql jdbc 中,自动提交会影响所有连接吗?

使用连接池时,设置连接的 autocommit = false 是否仅影响此连接?

如果我在未设置 autocommit = true 的情况下关闭此连接并获得新连接,此连接的策略是否会设置为 autocommit = true?

0 投票
1 回答
966 浏览

multithreading - 跨线程共享连接的 JDBC 自动提交

我有一个 servlet,我在其中得到一个 Connection 对象,然后将其交给两个工作线程以进行各种活动。我现在需要在一个线程上添加一个事务。

如果我开始这样的事务:connection.setAutoCommit(false);

这会影响两个线程吗?我想会的。

我是否必须获得每个线程的单独连接?

谢谢

0 投票
2 回答
20149 浏览

multithreading - JDBC 提交失败,当 autocommit=true 时调用 commit。多线程休眠会话以某种方式改变自动提交?

我有产生线程#2的主线程,它在主线程中使用相同的休眠会话。线程 #2 每隔几分钟就会执行一次“select 1”以保持数据库连接处于活动状态,因为主线程的进程运行时间很长。一旦主线程完成了处理,它就会调用一个提交,但我得到了错误:

在主线程中,它创建成功提交的内部事务,它只是在提交时抛出此错误的外部事务。我看不出有什么可以改变自动提交布尔值。在我引入第二个线程以保持连接处于活动状态之前,从未发生过此错误。

0 投票
1 回答
753 浏览

java - 使用 Java 将目录树自动提交到 SVN

我想使用 java 工具将带有文件的目录树自动提交到 svn。

有shell和bat脚本

蝙蝠

重击:

它们可以工作,但我想要这些脚本的 java 实现(例如,ANT 脚本)。有java实现吗?

0 投票
1 回答
435 浏览

php - PHP 和 MySQL:自己运行事务?

在 MySQL 中使用事务的想法很好。如果出现问题,能够回滚事务的想法也很好。

我的问题是:在应用程序中,自己控制事务是否值得,还是让 MySQL 为我处理?换句话说,应该对 MySQL 给我的自动提交功能有积极的不信任吗?

例子:

而不是让自动提交功能自己做方便的工作。

注意:我正在编写的应用程序仅设置为一次运行一个查询,不会有任何情况(例如在某些(大多数)银行和其他金融应用程序中)我需要确保两个查询发生变化数据,成功。

这主要是出于控制这类东西的愿望(以及自动提交功能中的某种缺乏)。