Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql magento锁等待超时超出了销售\u平面\u订单\u网格_Sql_Magento_Timeout_Locking - Fatal编程技术网

Sql magento锁等待超时超出了销售\u平面\u订单\u网格

Sql magento锁等待超时超出了销售\u平面\u订单\u网格,sql,magento,timeout,locking,Sql,Magento,Timeout,Locking,我有一个几乎没有扩展的magento站点。主扩展是giftcard扩展,用于唯一代码。我们现在正在运行800K代码的促销,因此它正在创造巨大的流量。现在的问题是,它正在创建鬼订单,因为在接受付款后-在订单必须从保留订单注册到确认订单的最后一刻-它显示了表锁定错误 确切的错误是: SQLSTATE[HY000]:一般错误:超过1205锁等待超时;尝试重新启动事务,查询为:插入sales\u flat\u order\u grid(实体id,状态,门店id,客户id,基本总金额,基本总金额,总金额,

我有一个几乎没有扩展的magento站点。主扩展是giftcard扩展,用于唯一代码。我们现在正在运行800K代码的促销,因此它正在创造巨大的流量。现在的问题是,它正在创建鬼订单,因为在接受付款后-在订单必须从保留订单注册到确认订单的最后一刻-它显示了表锁定错误

确切的错误是:

SQLSTATE[HY000]:一般错误:超过1205锁等待超时;尝试重新启动事务,查询为:插入
sales\u flat\u order\u grid
实体id
状态
门店id
客户id
基本总金额
基本总金额
总金额
增量id
基本货币代码
订单货币代码
门店
创建的名称
),
更新,
账单名称
发货名称
)选择
main\u table
entity\u id
main\u table
main\u table
store\u id
main\u table
main\u table
基本总计,
基本总计
基本总计
基本总计
主表
支付总额
主表
增量id
主表
基本货币代码
主表
订单货币代码,
主表
主表
主表 更新了、CONCAT(IFNULL(table_billing_name.firstname)、“”、IFNULL(table_billing_name.middlename)、“”、IFNULL(table_billing_name.lastname)、“”、IFNULL(table_shipping_name.middlename)、“”、IFNULL(table_shipping_name.middlename、“”、IFNULL)(table_shipping_name.lastname、“”、IFNULL)(table_shipping_name.lastname、“”)作为
sales\u-flat\u-order
AS
main\u-table
LEFT JOIN
sales\u-flat\u-order\u-address
AS
table\u-billing\u-name
main\u-table
账单地址id=
账单名称
实体idLEFT JOIN
账单地址ble_shipping_name
ON
main_table
shipping_address_id
table_shipping_name
其中(main_table.entity_id IN('140650'))在重复键更新
实体id
=值(
实体id
),
状态
=值(
状态
),
存储单元id
=值(
store\u id
)、
customer\u id
=价值(
customer\u id
)、
base\u grand\u total
=价值(
base\u grand\u total
)、
base\u total
=价值(
grand\u total
)、
total
)、
已支付的总价值(
increment\u-id
=值(
increment\u-id
),
base\u-currency\u-code>=值(
base\u-currency\u-code
),
order\u-currency\u-code>=值(
store\u-name
),
created\u-at
=值(
created\u-at
),
updated_at
=值(
updated_at
),
billing_name
=值(
billing_name
),
shipping_name
=值(
shipping_name

除了:140650用于销售\平面\订单\网格的实体id之外,似乎没有其他参考


如果有人有任何想法,请告诉我可能的解决方案。

好的,我回答我自己的问题-以防其他人发现有帮助

解决方案:从
sales\u flat\u order
运行缺少
entity\u id的插入查询,通过将
140650
替换为
main\u table.entity\u id不在(从sales\u flat\u order中选择sales\u flat\u order.entity\u id)来运行上述查询
这将解决问题。这是因为两个表共享相同的
实体id


我还了解到,请设置慢速查询日志,因为您可以看到哪个查询需要很长的时间(它们是在数据库服务器资源被占用时造成死锁的查询)-一旦我发现并解决了第三方扩展缓慢的查询问题-没有表锁错误。

此问题可能与早期版本的Magento中的错误有关。过去的问题是,插入sales\u flat\u order\u grid发生在事务中。由于Magento使用查询填充它,因此query planner could无法确定要锁定的行锁定了整个sales\u flat\u order\u网格表。因为这发生在事务中,所以锁定会保留到提交


如果这是导致您出现问题的原因,您需要解决将订单网格计算移动到提交之后的问题。

如何将代码移动到提交之后?我找不到订单在网格中保存订单数据的代码。