我正在为mariasql使用mariasql和mysql workbench IDE,但我无法禁用自动提交模式。如何关闭自动提交?
答案 0 :(得分:1)
答案 1 :(得分:1)
我认为关闭autocommit
是错误的。
处理自动提交有三种方法:
autocommit=1
- 立即提交所有陈述。这通常适合随意使用。
BEGIN
... COMMIT
- 您明确包含一组SQL语句的位置。通过BEGIN
,系统会提醒您需要COMMIT
。
autocommit=0
... COMMIT
- 我认为这很容易出错。您默认自动提交为0,但是忘记发出COMMIT
。然后你想知道为什么你的INSERTs
消失了。
答案 2 :(得分:0)
您可以为会话设置autocommit为false:
SET autocommit = 0;
https://mariadb.com/kb/en/mariadb/server-system-variables/#autocommit
答案 3 :(得分:0)
我将XAMPP-VM与MariaDB与InnoDB一起使用。无法设法使用my.conf禁用autocommit,但是,我编辑了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';
硬币的另一面是如果你升级那么你需要重复这个。
希望,你可以采用这个解决方案/让你知道如何做到这一点!
答案 4 :(得分:0)
我发现的唯一方法是将--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%'"
分步命令:
$ vim /usr/lib/systemd/system/mariadb.service
--autocommit=0
添加到ExecStart
(对我来说是#92)ExecStart=/usr/sbin/mariadbd --autocommit=0 $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION
$ systemctl daemon-reload
$ systemctl restart mariadb
autocommit
变量的状态$ mariadb -u root -e "show variables like '%autocommit%'"
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| autocommit | OFF |
...
+------------------------+-------+