这是我的create table查询字符串和表desc:
CREATE TABLE `ts_template_size` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`template_id` int(11) NOT NULL,
`type` smallint(6) NOT NULL DEFAULT '2',
`width` varchar(100) NOT NULL DEFAULT '' ,
`height` varchar(100) NOT NULL DEFAULT '' ,
PRIMARY KEY (`id`),
KEY `idx_template_id` (`template_id`)
) ENGINE=InnoDB AUTO_INCREMENT=134428 DEFAULT CHARSET=utf8
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| template_id | int(11) | NO | MUL | NULL | |
| type | smallint(6) | NO | | 2 | |
| width | varchar(100) | NO | | | |
| height | varchar(100) | NO | | | |
+-------------+--------------+------+-----+---------+----------------+
这是插入查询:
INSERT INTO nova_ts_liguangyi.ts_template_size
(id, template_id, type, width, height)
VALUES
(NULL, 20002, 2, '960', '90'),
(NULL, 20002, 2, '960', '60'),
(NULL, 20000, 2, '960', '90'),
(NULL, 20000, 2, '960', '60')
如果我单独执行插入,则可能成功。
但是,插入操作是在事务处理下执行的,在插入操作之前,对表有一个删除操作。
这是我得到的错误:
{ [Error: ER_LOCK_WAIT_TIMEOUT: Lock wait timeout exceeded; try restarting transaction]
code: 'ER_LOCK_WAIT_TIMEOUT',
errno: 1205,
sqlState: 'HY000',
index: 0 }
桌子似乎已被锁定?然后我检查HeidiSQL客户端中的INNODB_LOCK
和INNODN_TRX
表,这是我得到的结果:
似乎插入操作案例是锁?我该如何解决这个问题?
BTW,我通过节点js模块mysqljs
操作mysql,所以我不能用一些参数执行查询,比如--lock-table=false