2010-07-20 3 views
1

hey, j'ai une table InnoDB que je suis en train d'exécuter un index et je reçois l'erreur suivante:Impossible d'ajouter un index sur un champ avec InnoDB?

Deadlock found when trying to get lock; try restarting transaction 

La syntaxe est:

ALTER TABLE mytable ADD INDEX (fieldtoindex); 

toutes les idées que pourquoi cela jetterait une erreur de blocage? Merci!

+0

Est-ce que quelque chose d'autre utilise la base de données pendant que vous essayez d'ajouter l'index? – mlschechter

Répondre

0

Vous ne fournissez pas assez d'informations pour répondre à votre question. Avec InnoDB, en règle générale, en cas d'erreur, regardez la sortie de SHOW ENGINE INNODB STATUS. Vous voulez exécuter ceci dans le client de ligne de commande, et terminer la commande avec \ G (barre oblique inversée G) pour rendre la sortie lisible.

Dans votre cas, les informations pertinentes seront au sommet du moteur SHOW sortie STATUS INNODB, où il est dit quelque chose comme

------------------------ 
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 

Cette liste les noms de tables pertinentes et index, ainsi que les déclarations impliqué. Avec cette information, votre problème devient débogable.

Voir aussi http://www.mysqlperformanceblog.com/2006/07/17/show-innodb-status-walk-through/ pour plus d'informations.

Si cela se produit plus souvent, jetez un oeil à http://freshmeat.net/projects/innotop, écran "D" (affichage de l'interblocage).

Questions connexes