codememo

mariadb에서 자동 커밋을 해제하는 방법은 무엇입니까?

tipmemo 2023. 8. 21. 21:22
반응형

mariadb에서 자동 커밋을 해제하는 방법은 무엇입니까?

marasql과 marasql에 mysql workbench IDE를 사용하고 있지만 자동 커밋 모드를 사용할 수 없습니다.자동 커밋을 끄려면 어떻게 해야 합니까?

SQL 편집기에는 자동 커밋 모드를 전환할 수 있는 도구 모음 버튼이 있습니다.

enter image description here

자동 커밋을 끄면 트랜잭션을 시작하고 커밋하는 데 사용할 수 있는 다른 두 개의 파란색 버튼이 활성화됩니다.

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" "$@" &
    ...

그리고 그것은 효과가 있었습니다.Stop-Start 후에 이 옵션을 사용하여 확인할 수 있습니다(스위치의 다른 경로로 진행되므로 다시 시작해도 변경 사항이 적용되지 않음).

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

다른 측면은 업그레이드를 하면 이를 반복해야 한다는 것입니다.

호프, 당신은 이 해결책을 채택할 수 있습니다. / 방법을 알려줍니다!

세션에 대해 자동 커밋을 false로 설정할 수 있습니다.

SET autocommit = 0;

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

제가 찾은 유일한 방법은--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   |
...
+------------------------+-------+

전원을 끄는 것은 실수라고 생각합니다.autocommit.

자동 커밋을 처리하는 세 가지 방법이 있습니다.

  • autocommit=1모든 문이 즉시 커밋됩니다.이것은 일반적으로 일상적인 사용에 적합합니다.

  • BEGIN...COMMIT여기서 SQL 문 집합을 명시적으로 대괄호로 묶습니다.그것을 가짐으로써.BEGIN당신은 상기됩니다.COMMIT필요할 것입니다.

  • autocommit=0...COMMIT저는 이것이 오류를 일으키기 쉽다고 봅니다.기본적으로 자동 커밋을 0으로 설정한 다음 실행하지 않습니다.COMMIT그럼 왜 당신은 당신의INSERTs잠수타다.

언급URL : https://stackoverflow.com/questions/37172393/how-to-turn-off-autocommit-in-mariadb

반응형