MySQL InnoDB解锁了一行

时间:2010-08-11 03:57:47

标签: mysql database innodb

更新数据库中的某一行时会出现锁定超时。其他行可以更新。

#1205 - Lock wait timeout exceeded; try restarting transaction

如何解锁此特定行?

以下是两个相关表格。我正在尝试更新用户的电子邮件。我不认为租客应该造成任何问题。

CREATE  TABLE IF NOT EXISTS `mydb`.`user` (
  `username` VARCHAR(45) NOT NULL ,
  `email` VARCHAR(60) NOT NULL ,
  `password` VARCHAR(45) NOT NULL ,
  `created` TIMESTAMP NULL DEFAULT NULL ,
  `last_login` TIMESTAMP NULL ,
  PRIMARY KEY (`username`) )

ENGINE = InnoDB;


CREATE  TABLE IF NOT EXISTS `mydb`.`tenant` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `username` VARCHAR(45) NOT NULL ,
  `address` VARCHAR(90) NULL ,
  `company` VARCHAR(45) NULL ,
  `phone` VARCHAR(25) NOT NULL ,
  `fax` VARCHAR(25) NULL ,
  `notes` TEXT NULL ,
  `contacts` TEXT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `fk_tenant_user1` (`username` ASC) ,
  CONSTRAINT `fk_tenant_user1`
    FOREIGN KEY (`username` )
    REFERENCES `mydb`.`user` (`username` )
    ON DELETE CASCADE
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

3 个答案:

答案 0 :(得分:5)

我最终只是运行FLUSH TABLE user,现在看起来很好。

答案 1 :(得分:3)

尝试在交互式mysql客户端中运行以下命令:

SHOW ENGINE INNODB STATUS\G

查看当前打开的交易。看看其中一个是否导致该行被锁定。

答案 2 :(得分:0)

在我的情况下,MySql在6-7小时后自行修复。 (当我醒来解决这个问题时。它已经消失了)