programing

MySQL 클라이언트에 대한 자동 커밋을 해제하려면 어떻게 해야 합니까?

batch 2023. 9. 8. 21:17
반응형

MySQL 클라이언트에 대한 자동 커밋을 해제하려면 어떻게 해야 합니까?

저는 데이터베이스에 자동 커밋이 켜져 있다는 가정하에 작성된 웹 앱이 있어서 거기서 변경하고 싶지 않습니다.그러나 내가 찾을 수 있는 모든 문서는 데이터베이스에서 init_connect를 사용하는 것, 즉 모든 클라이언트 연결에 대한 글로벌 설정에 대해 이야기하는 것처럼 보입니다.

Linux 명령줄에서 mysql을 실행할 때(매번 입력할 필요 없이) autocommit=0을 설정할 수 있는 방법이 있습니까?

가장 좋은 방법은 mysql 명령줄 클라이언트를 시작한 다음 원하는 sql을 자동으로 실행한 후 제어권을 사용자에게 넘겨주는 스크립트를 작성하는 것입니다.

는 'lex'라는 응용 됩니다. 스트로크를 작용합니다.할 수 .password를 입력. 비밀번호를 입력할 때까지 기다립니다.다음 명령을 추가로 실행합니다.SET autocommit = 0;원하는 명령을 실행할 수 있도록 대화형 모드로 들어갑니다.

지휘에 관하여 더 많은 것을 위하여SET autocommit = 0;참조.. http://dev.mysql.com/doc/refman/5.0/en/innodb-transaction-model.html

명령 줄 유틸리티가 ssh를 시작하고 원격 서버에 연결한 후 응용 프로그램을 시작하여 사용자 이름과 암호를 입력한 후 제어권을 넘겨줍니다. 입력을 많이 절약할 수 있습니다. :)

http://linux.die.net/man/1/expect

DC

Michael Hinds가 제공하는 스크립트를 기대합니다.

spawn /usr/local/mysql/bin/mysql 
expect "mysql>" 
send "set autocommit=0;\r" 
expect "mysql>" interact

기대는 꽤 강력하고 이 경우처럼 삶을 훨씬 더 쉽게 만들 수 있습니다.

호출하지 않고 스크립트를 실행하려면 shebang 라인을 사용하십시오.

의 로 합니다 합니다 (: use).which expect예상 실행 파일의 위치 찾기)

#! /usr/bin/expect

그런 다음 을 사용하여 스크립트의 권한을 변경합니다.

chmod 0744 myscript

그럼 대본을 불러봅니다.

./myscript

DC

이렇게 하는 방법은 세 가지가 있습니다.

  1. 에를 하기 에.INSERT a, a를 합니다.BEGIN; 하면 커밋이.이렇게 하면 자동 커밋이 꺼집니다.당신은 할 필요가 있을 것입니다.COMMIT;일단 데이터를 데이터베이스에 지속적으로 저장할 수 있습니다.

  2. 사용하다autocommit=0;데이터베이스 연결을 인스턴스화할 때마다.

  3. 설정의 의 를 a 합니다를 합니다.autocommit=0당신의의의 my.cnfMySQL의 구성 파일입니다.

~/.my.cnf에 추가할 수 있는 것처럼 보이지만 다음과 같이 [client] 섹션의 init-command 플래그에 인수로 추가해야 합니다.

[client]
init-command='set autocommit=0'

자동 커밋 상태를 확인하는 데 유용합니다.

select @@autocommit;

mysql 텍스트 콘솔을 말씀하시는 건가요?그러면:

START TRANSACTION;
  ...
  your queries.
  ...
COMMIT;

제가 추천하는 것입니다.

그러나 이런 종류의 쿼리를 실행해야 할 때마다 이를 입력하지 않으려면 my.cnf 파일의 [mysqld] 섹션에 다음을 추가합니다.

init_connect='set autocommit=0'

이것은 설정됩니다.autocommit모든 고객을 위해 자리를 비우게 될 겁니다.

자동 커밋 오프의 경우 아래 명령을 반드시 사용합니다.아래에 설정합니다.my.cnf파일:

    [mysqld]
    autocommit=0

복원 시 수동으로 자동 커밋을 끄는 대신 필요한 모든 문을 SQL 파일에 포함하는 방식으로 MySQL 데이터를 이미 덤프할 수 있습니다.

mysqdump의 명령줄 매개 변수는--no-autocommit. 추가하는 것도 고려해 볼 수 있습니다.--opt복원 작업 속도를 높이기 위해 다른 매개 변수의 조합을 설정합니다.

다음은 내가 사용할 때 완전한 mysqldump 명령행에 대한 예입니다.--no-autocommit그리고.--opt:

mysqldump -hlocalhost -uMyUser -p'MyPassword' --no-autocommit --opt --default-character-set=utf8 --quote-names  MyDbName  >  dump.sql

이러한 매개 변수에 대한 자세한 내용은 mysqldump의 참조를 참조하십시오.

mysql에서 autocommit 변수의 기본값은 1입니다. mysql에서 autocommit의 현재 값을 보려면 command mysql>을 선택하고 autocommit을 해제하려면 command mysql> set autocommit = 0;

언급URL : https://stackoverflow.com/questions/2280465/how-do-i-turn-off-autocommit-for-a-mysql-client

반응형