> 데이터 베이스 > MySQL 튜토리얼 > 업데이트를 실행할 때 MySQL 데이터베이스가 멈추는 문제를 해결하는 방법

업데이트를 실행할 때 MySQL 데이터베이스가 멈추는 문제를 해결하는 방법

WBOY
풀어 주다: 2023-05-26 19:07:05
앞으로
2864명이 탐색했습니다.

문제 분석

일반적으로 데이터베이스 트랜잭션이 제출되지 않아 업데이트 또는 삭제가 중단됩니다.

솔루션

  1. 업데이트 또는 삭제를 수행한 후 커밋할 트랜잭션을 제출해야 합니다.

  2. 데이터베이스 클라이언트를 찾아 커밋 작업을 수행하세요.

그래도 작동하지 않는다면. 데이터베이스가 데이터 작업을 수행하지 못하거나 트랜잭션이 커밋되지 않은 경우 실행해야 하는 SQL 문을 잠급니다.

프로세스 재현 및 해결

다음 명령을 통해 데이터베이스의 자동 제출 상태를 확인하세요

show variables like 'autocommit';
로그인 후 복사

SQL을 통해 데이터베이스의 자동 자동 제출을 꺼짐으로 설정하세요

-- on为开启,off为关闭
set autocommit=off;
-- 或者1为开启,0为关闭
set autocommit=0;
로그인 후 복사

표의 데이터는 다음과 같습니다

업데이트를 실행할 때 MySQL 데이터베이스가 멈추는 문제를 해결하는 방법

두 개의 창을 열어 업데이트를 별도로 실행합니다. 작업

update car set color ='银色' where id = 1;
update car set color ='红色' where id = 1;
로그인 후 복사

실행 중인 트랜잭션 쿼리:

SELECT * FROM information_schema.INNODB_TRX;
로그인 후 복사

업데이트를 실행할 때 MySQL 데이터베이스가 멈추는 문제를 해결하는 방법

그림 속 트랜잭션의 스레드 ID(trx_mysql_thread_id)에 따라 해당 mysql 스레드를 볼 수 있습니다. 1084(업데이트가 잠금을 기다리고 있음)이고 다른 하나는 1089(업데이트 트랜잭션이 커밋 없이 실행되고 있음)

mysql 명령을 사용하여 스레드를 종료할 수 있습니다: kill thread id

kill 1089;
로그인 후 복사

스레드가 보류 중인 경우 잠금은 해당 기간 동안 종료되지 않습니다. 두 번째 업데이트 문은 잠금 시간이 초과될 때까지 기다리는 메시지를 표시합니다.

업데이트를 실행할 때 MySQL 데이터베이스가 멈추는 문제를 해결하는 방법

관련 명령:

-- 查看正在锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; 

-- 查看等待锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
-- 查询mysql数据库中存在的进程
select * from information_schema.`PROCESSLIST`(show processlist;)
로그인 후 복사

확장

oracle 작업 방법:

잠금 기록 쿼리

SELECT s.sid, s.serial# FROM v$locked_object lo, dba_objects ao, v$session s WHERE ao.object_id = lo.object_id AND lo.session_id = s.sid;
로그인 후 복사

잠금 기록 삭제

ALTER system KILL session 'SID,serial#';
로그인 후 복사

위 내용은 업데이트를 실행할 때 MySQL 데이터베이스가 멈추는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿