更新数据库中的某一行时会出现锁定超时。其他行可以更新。
#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;
答案 0 :(得分:5)
我最终只是运行FLUSH TABLE user
,现在看起来很好。
答案 1 :(得分:3)
尝试在交互式mysql客户端中运行以下命令:
SHOW ENGINE INNODB STATUS\G
查看当前打开的交易。看看其中一个是否导致该行被锁定。
答案 2 :(得分:0)
在我的情况下,MySql在6-7小时后自行修复。 (当我醒来解决这个问题时。它已经消失了)