Php 我能得到MySQL吗;序列化失败:1213(死锁)";没有事务且在单行上?

Php 我能得到MySQL吗;序列化失败:1213(死锁)";没有事务且在单行上?,php,mysql,Php,Mysql,我得到一个“序列化失败:尝试获取锁时发现1213死锁;”。但是,我已经扫描了我的代码(这是一个Laravel应用程序),在代码路径中找不到任何事务的使用 据我所知,我没有进行任何表锁定,也没有使用事务。而且(再一次——据我所知)我只更新单行——我的表上没有多行删除或截断 假设这是真的,在什么条件下会引发此错误,假设对单行执行单次选择和更新?它还会发生吗 以下是我的“显示INNODB状态”输出: ------------------------ 最近检测到的死锁 -----------------

我得到一个“序列化失败:尝试获取锁时发现1213死锁;”。但是,我已经扫描了我的代码(这是一个Laravel应用程序),在代码路径中找不到任何事务的使用

据我所知,我没有进行任何表锁定,也没有使用事务。而且(再一次——据我所知)我只更新单行——我的表上没有多行删除或截断

假设这是真的,在什么条件下会引发此错误,假设对单行执行单次选择和更新?它还会发生吗

以下是我的“显示INNODB状态”输出:

------------------------
最近检测到的死锁
------------------------
170914  8:09:36
***(1)交易:
事务163BF1D7,活动0秒开始索引读取
mysql表在使用中3,已锁定3
锁等待4个锁结构,堆大小1248,3行锁
MySQL线程id 467566,操作系统线程句柄0x7f3cd40c6700,查询id 1484970989
本地主机wwperson更新
更新'fmccache'设置'dirty'='1',其中站点id='3757',供应商id='2',操作id='1'
***(1)等待授予此锁:
记录锁定空间id 0第36364页n位128索引
`表“数据库”的fmccache\u供应商\u id\u外国`fmccache`trx id 163BF1D7
锁定模式X等待
记录锁,堆4号物理记录:n_字段2;紧凑格式;信息位0
0:len4;十六进制00000002;asc;;
1:len6;hex 00000000 7FC7;asc;;
***(2)交易:
事务163BF1D6,活动0秒获取行
mysql表在使用中3,已锁定3
5个锁结构,堆大小1248,17个行锁,撤消日志条目1
MySQL线程id 467565,操作系统线程句柄0x7f3c43aa5700,查询id 1484970990
本地主机wwperson更新
更新'fmccache'设置'dirty'='1',其中站点id='3653',供应商id='2',操作id='1'
***(2)持有锁:
记录锁定空间id 0第36364页n位128索引'fmccache\u vendor\u id\u foreign'(表'database')。'fmccache`trx id 163BF1D6
锁定模式X
记录锁,堆4号物理记录:n_字段2;紧凑格式;信息位0
0:len4;十六进制00000002;asc;;
1:len6;hex 00000000 7FC7;asc;;
记录锁,堆5号物理记录:n_字段2;紧凑格式;信息位0
0:len4;十六进制00000002;asc;;
1:len6;hex 00000000 7FC8;asc;;
记录锁,堆9号物理记录:n_字段2;紧凑格式;信息位0
0:len4;十六进制00000002;asc;;
1:len6;hex 00000000 7FCC;asc;;
记录锁,堆10号物理记录:n_字段2;紧凑格式;信息位0
0:len4;十六进制00000002;asc;;
1:len6;hex 00000000 7fcd;asc;;
记录锁,堆号13物理记录:n_字段2;紧凑格式;信息位0
0:len4;十六进制00000002;asc;;
1:len6;hex 00000000 7FD0;asc;;
记录锁,堆号14物理记录:n_字段2;紧凑格式;信息位0
0:len4;十六进制00000002;asc;;
1:len6;hex 00000000 7FD1;asc;;
记录锁,堆15号物理记录:n_字段2;紧凑格式;信息位0
0:len4;十六进制00000002;asc;;
1:len6;hex 00000000 7FD2;asc;;
***(2)等待授予此锁:
记录锁定空间id 0第36362页n位136索引'GEN\u CLUST\u index`of
表`database`.`fmccache`trx id 163BF1D6 lock_mode X locks rec,但不是gap waiting
记录锁,堆号15物理记录:n_字段8;紧凑格式;信息位0
0:len6;hex 00000000 7FD2;asc;;
1:len6;hex 000016436BF;asc 46;;
2:len7;十六进制5e0000202c0818;asc^;;
3:len4;六角头;asc;;
4:len4;十六进制00000002;asc;;
5:len4;hex 8000002;asc;;
6:len8;十六进制000000000000f03f;asc?;;
7:len4;800万;asc;;
***我们回滚事务(1)
------------
交易
------------
Trx id计数器1652B9A3
清除trx的n:o<1652B21D撤消n:o<0
历史记录列表长度3317
每个会话的事务列表:
---事务0,未启动
MySQL线程id 484099,操作系统线程句柄0x7f3c439e1700,查询id 1540210787
本地主机根
显示引擎InnoDB状态

对于Innodb,每条语句都是一个事务,但我不怀疑您的问题与事务有关。你能分享
显示引擎InnoDB状态的输出吗?
?比尔,我希望-错误很少发生,在出错期间我无法获得该输出。或者此报告是累积的?是的,它似乎是并显示了上次检测到的死锁。好的,刚刚发布了我的innodb状态。这非常有帮助(非常感谢)。因此,现在我的问题归结为“似乎没有发生任何事务,但我是否应该删除该表上的外键以避免出现这种情况?”我还发现了描述问题的post和bug修复程序(以及bug报告),尽管它们实际上使用事务进行复制,而我没有使用Innodb,每个报表都是一笔交易,但我不怀疑您的问题与交易有关。你能分享
显示引擎InnoDB状态的输出吗?
?比尔,我希望-错误很少发生,在出错期间我无法获得该输出。或者此报告是累积的?是的,它似乎是并显示了上次检测到的死锁。好的,刚刚发布了我的innodb状态。这非常有帮助(非常感谢)。因此,现在我的问题归结为“似乎没有发生任何事务,但我是否应该删除该表上的外键以避免此情况?”我还发现了描述此问题的post和bug修复程序(以及bug报告),尽管它们实际上使用事务来复制—我没有这样做
------------------------
LATEST DETECTED DEADLOCK
------------------------
170914  8:09:36
*** (1) TRANSACTION:
TRANSACTION 163BF1D7, ACTIVE 0 sec starting index read
mysql tables in use 3, locked 3
LOCK WAIT 4 lock struct(s), heap size 1248, 3 row lock(s)
MySQL thread id 467566, OS thread handle 0x7f3cd40c6700, query id 1484970989 
localhost wwwperson Updating
update `fmccache` set `dirty` = '1' where station_id = '3757' and vendor_id = '2' and operation_id = '1'
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 0 page no 36364 n bits 128 index 
`fmccache_vendor_id_foreign` of table `database`.`fmccache` trx id 163BF1D7 
lock_mode X waiting
Record lock, heap no 4 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
0: len 4; hex 00000002; asc     ;;
1: len 6; hex 000000007fc7; asc       ;;

*** (2) TRANSACTION:
TRANSACTION 163BF1D6, ACTIVE 0 sec fetching rows
mysql tables in use 3, locked 3
5 lock struct(s), heap size 1248, 17 row lock(s), undo log entries 1
MySQL thread id 467565, OS thread handle 0x7f3c43aa5700, query id 1484970990 
localhost wwwperson Updating
update `fmccache` set `dirty` = '1' where station_id = '3653' and vendor_id = '2' and operation_id = '1'
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 0 page no 36364 n bits 128 index `fmccache_vendor_id_foreign` of table `database`.`fmccache` trx id 163BF1D6 
lock_mode X
Record lock, heap no 4 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
0: len 4; hex 00000002; asc     ;;
1: len 6; hex 000000007fc7; asc       ;;

Record lock, heap no 5 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
0: len 4; hex 00000002; asc     ;;
1: len 6; hex 000000007fc8; asc       ;;

Record lock, heap no 9 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
0: len 4; hex 00000002; asc     ;;
1: len 6; hex 000000007fcc; asc       ;;

Record lock, heap no 10 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
0: len 4; hex 00000002; asc     ;;
1: len 6; hex 000000007fcd; asc       ;;

Record lock, heap no 13 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
0: len 4; hex 00000002; asc     ;;
1: len 6; hex 000000007fd0; asc       ;;

Record lock, heap no 14 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
0: len 4; hex 00000002; asc     ;;
1: len 6; hex 000000007fd1; asc       ;;

Record lock, heap no 15 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
0: len 4; hex 00000002; asc     ;;
1: len 6; hex 000000007fd2; asc       ;;

*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 0 page no 36362 n bits 136 index `GEN_CLUST_INDEX` of 
table `database`.`fmccache` trx id 163BF1D6 lock_mode X locks rec but not gap waiting
Record lock, heap no 15 PHYSICAL RECORD: n_fields 8; compact format; info bits 0
0: len 6; hex 000000007fd2; asc       ;;
1: len 6; hex 0000163436bf; asc    46 ;;
2: len 7; hex 5e0000202c0818; asc ^   ,  ;;
3: len 4; hex 00000ead; asc     ;;
4: len 4; hex 00000002; asc     ;;
5: len 4; hex 80000002; asc     ;;
6: len 8; hex 000000000000f03f; asc        ?;;
7: len 4; hex 80000000; asc     ;;

*** WE ROLL BACK TRANSACTION (1)
------------
TRANSACTIONS
------------
Trx id counter 1652B9A3
Purge done for trx's n:o < 1652B21D undo n:o < 0
History list length 3317
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 0, not started
MySQL thread id 484099, OS thread handle 0x7f3c439e1700, query id 1540210787 
localhost root
SHOW ENGINE InnoDB STATUS