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
이렇게 하는 방법은 세 가지가 있습니다.
에를 하기 에.
INSERT
a, a를 합니다.BEGIN;
◦ 하면 커밋이.이렇게 하면 자동 커밋이 꺼집니다.당신은 할 필요가 있을 것입니다.COMMIT;
일단 데이터를 데이터베이스에 지속적으로 저장할 수 있습니다.사용하다
autocommit=0;
데이터베이스 연결을 인스턴스화할 때마다.설정의 의 를 a 합니다를 합니다.
autocommit=0
당신의의의my.cnf
MySQL의 구성 파일입니다.
~/.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
'programing' 카테고리의 다른 글
PowerShell에서 DateTime을 UNIX 시간으로 변환하려면 어떻게 해야 합니까? (0) | 2023.09.08 |
---|---|
어떻게 하면 최소한의 오버헤드로 간단한 서버리스 p2p 브라우저를 브라우저 메시징에 구현할 수 있습니까? (0) | 2023.09.08 |
조회 방법의 Spring Data 선택적 매개 변수 (0) | 2023.09.03 |
ASP.NET 사용자 지정 컨트롤 - 알 수 없는 서버 태그 (0) | 2023.09.03 |
SQL Server 잘라내기 및 8192 제한 (0) | 2023.09.03 |