【问题标题】:Query execution was interrupted, error #1317查询执行中断,错误 #1317
【发布时间】:2013-06-27 22:23:28
【问题描述】:

我有一张桌子,上面放着一堆产品(在这种情况下是书)。我的销售点系统为我生成了一份包含 ISBN(唯一产品编号)和永久销售的报告。

我基本上需要进行更新,将一张表中的 ISBN 与另一张表中的 ISBN 匹配,然后将一张表中的销售额添加到另一张表中。

这需要对大约 30,000 种产品进行。

这是我正在使用的 SQL 语句:

UPDATE `inventory`,`sales` 
   SET `inventory`.`numbersold` = `sales`.`numbersold` 
 WHERE `inventory`.`isbn` = `sales`.`isbn`;

我收到 MySQL 错误:

#1317 SQLSTATE: 70100 (ER_QUERY_INTERRUPTED) 查询执行被中断

我正在使用 GoDaddy.com 提供的 phpMyAdmin

【问题讨论】:

  • UPDATE inventory,sales ... 对吗?我的意思是inventory,sales之间的逗号
  • 我的意思是您的查询与您发布的方式错误...应该是UPDATE inventory SET inventory.numbersold = sales.numbersold WHERE inventory.isbn = sales.isbn
  • @Rahul 当我运行那个 SQL 语句时,我得到这个错误 #1054 - Unknown column 'sales.isbn' in 'where Clause'
  • 好吧,我将按照您的帖子...您的数据库中必须有一个名为 sales 的表。为了帮助您,您需要提供完整的查询以及查询中涉及的表(可能是模式)。
  • 该列不是未知的,但它仅在我在 UPDATE 语句开头进行库存、销售时才有效。

标签: mysql


【解决方案1】:

我可能来得有点晚,但是...看起来查询确实被执行时间限制打断了。解决这个问题可能没有简单的方法,但这里有几个想法:

确保 inventory.isbnsales.isbn 已编入索引。如果不是,添加索引将大大减少您的执行时间。

如果这不起作用,请将查询分解为块并运行几次:

UPDATE `inventory`,`sales` 
  SET `inventory`.`numbersold` = `sales`.`numbersold` 
WHERE `inventory`.`isbn` = `sales`.`isbn`
  AND substring(`inventory`.sales`,1,1) = '1';

AND 子句将搜索限制为以数字 1 开头的 ISBN。对从“0”到“9”的每个数字运行查询。对于 ISBN,您可能会发现选择最后一个字符可以获得更好的结果。使用substring(inventory.sales,-1)`

【讨论】:

    【解决方案2】:

    尝试在这样的两个表中使用 INNER JOIN

           UPDATE `inventory` 
           INNER JOIN `sales` 
           ON  `inventory`.`isbn` = `sales`.`isbn`
           SET `inventory`.`numbersold` = `sales`.`numbersold` 
    

    【讨论】:

      【解决方案3】:

      更新inventory,sales 设置inventory.numbersold = sales.numbersold 在哪里inventory.isbn = sales.isbninventory.id

      更新inventory,sales 设置inventory.numbersold = sales.numbersold 在哪里inventory.isbn = sales.isbninventory.id > 5000 inventory.id

      ...

      如果报错,可以尝试将数字减少到1000,例如

      【讨论】:

        猜你喜欢
        • 2013-02-05
        • 1970-01-01
        • 2018-02-16
        • 1970-01-01
        • 1970-01-01
        • 2017-12-17
        • 2011-08-28
        • 1970-01-01
        • 2021-11-26
        相关资源
        最近更新 更多