2010-07-20 8 views
1

안녕 모두, 나는에 인덱스를 실행하기 위해 노력하고있어 나는 다음과 같은 오류 받고 있어요 InnoDB의 테이블이 있습니다InnoDB가있는 필드에 색인을 추가 할 수 없습니까?

Deadlock found when trying to get lock; try restarting transaction 

구문은 다음과 같습니다

ALTER TABLE mytable ADD INDEX (fieldtoindex); 

어떤 아이디어 등을 그게 왜 교착 상태 오류를 던질까요? 감사!

+0

인덱스를 추가하는 동안 다른 데이터베이스가 사용 중입니까? – mlschechter

답변

0

질문에 답변하기에 충분한 정보를 제공하지 않습니다.

InnoDB의 경우 일반적으로 오류가 발생하면 SHOW ENGINE INNODB STATUS의 출력을 살펴보십시오. 명령 행 클라이언트에서 이것을 실행하고 \ G (백 슬래시 대문자 G)로 명령을 끝내고 출력을 읽을 수있게하려고합니다. 귀하의 경우에는

은, 관련 정보는

------------------------ 
LATEST DETECTED DEADLOCK 
------------------------ 
100720 14:27:32 
*** (1) TRANSACTION: 
TRANSACTION 3 572739397, ACTIVE 2 sec, process no 3057, OS thread id 1362831680 starting index read 
mysql tables in use 1, locked 1 
LOCK WAIT 5 lock struct(s), heap size 1216, 3 row lock(s) 
MySQL thread id 37496388, query id 1645924019 host 10.147.209.20 db Updating 
update t set aid='4921978' where id in (302885,303582,303907,303911) 
*** (1) WAITING FOR THIS LOCK TO BE GRANTED: 
RECORD LOCKS space id 36004 page no 147 n bits 216 index `PRIMARY` of table `db`.`t` trx id 3 572739397 lock_mode X locks rec but not gap waiting 
Record lock, heap no 43 PHYSICAL RECORD: n_fields 19; compact format; info bits 0 

같은이가 관련 테이블과 인덱스 이름뿐만 아니라 문을 나열라고 표시 ENGINE INNODB 상태 출력의 상단에있을 것입니다 뒤얽힌. 이 정보를 사용하면 문제점을 디버깅 할 수 있습니다.

자세한 내용은 http://www.mysqlperformanceblog.com/2006/07/17/show-innodb-status-walk-through/도 참조하십시오.

더 자주 발생하는 경우 , "D"화면 (교착 상태 표시)을 확인하십시오.

관련 문제