繁体   English   中英

如何在mariadb中关闭自动提交?

[英]How to turn off autocommit in mariadb?

我正在使用 mariasql 和用于 mariasql 的 mysql 工作台 IDE,但我无法禁用自动提交模式。 如何关闭自动提交?

在 SQL 编辑器中有一个工具栏按钮,允许切换自动提交模式:

在此处输入图片说明

关闭自动提交将启用另外 2 个可用于启动和提交事务的蓝色按钮。

我将 XAMPP-VM 与 MariaDB 与 InnoDB 一起使用。 无法使用 my.conf 禁用自动提交,但是,我编辑了 mysql.server 文件(对于 XAMPP-VM,它位于 /opt/lampp/bin 文件夹中)并将此参数添加到启动

--autocommit=0

所以最后,它看起来像这样

...
case "$mode" in
  'start')
    # Start daemon
    ...
      $bindir/mysqld_safe --autocommit=0 --datadir="$datadir" --pid-file="$mysqld_pid_file_path" "$@" &
    ...

它做到了。 您可以在停止启动后使用此检查它(重新启动不会应用更改,因为它在交换机中的不同路径上进行)

select *
from information_schema.global_variables
where variable_name = 'AUTOCOMMIT';

硬币的另一面是,如果您升级,则需要重复此操作。

希望,您可以采用此解决方案/让您知道如何去做!

您可以将会话的自动提交设置为 false:

SET autocommit = 0;

https://mariadb.com/kb/en/mariadb/server-system-variables/#autocommit

我认为关闭autocommit是一个错误。

有3种处理自动提交的方法:

  • autocommit=1 -- 所有语句都立即提交。 这通常适合休闲使用。

  • BEGIN ... COMMIT -- 在其中显式括起一组 SQL 语句。 有了BEGIN ,你会被提醒需要一个COMMIT

  • autocommit=0 ... COMMIT -- 我认为这很容易出错。 您默认自动提交为 0,但随后忘记发出COMMIT 然后你想知道为什么你的INSERTs消失了。

我发现的唯一方法是将--autocommit=0添加到守护程序的启动命令中。

环境:

$ mariadb --version
mariadb  Ver 15.1 Distrib 10.5.6-MariaDB, for Linux (x86_64) using readline 5.1

$ grep PRETTY_NAME /etc/os-release 
PRETTY_NAME="Oracle Linux Server 7.9"

一行命令:

注意:您仍然需要手动添加--autocommit=0

$ vim /usr/lib/systemd/system/mariadb.service && systemctl daemon-reload && systemctl restart mariadb && mariadb -u root -e "show variables like '%autocommit%'"

分步命令:

  1. 使用文本编辑器打开作业文件
$ vim /usr/lib/systemd/system/mariadb.service
  1. --autocommit=0添加到ExecStart (对我来说它在 #92 中)
ExecStart=/usr/sbin/mariadbd --autocommit=0 $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION
  1. 重新加载守护进程
$ systemctl daemon-reload
  1. 重启服务
$ systemctl restart mariadb
  1. 检查autocommit变量的状态
$ mariadb -u root -e "show variables like '%autocommit%'"
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| autocommit             | OFF   |
...
+------------------------+-------+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM