簡體   English   中英

MySQL(游標/存儲過程):錯誤代碼:2013。在查詢 6000.015 秒期間丟失與 MySQL 服務器的連接

[英]MySQL(Cursors/stored procedures): Error Code: 2013. Lost connection to MySQL server during query 6000.015 sec

平台: MySQL Workbench 8.0 CE SQL: 5.5.57

我在使用存儲過程時遇到了一些麻煩。 當我調用存儲過程時,我不斷收到相同的錯誤 2013 丟失連接。

我嘗試過的事情:

  • 增加 DBMS 連接讀取超時間隔(60 - 6000 秒): 錯誤代碼:2013。在查詢期間丟失與 MySQL 服務器的連接
  • 索引我的表
  • 將光標限制為LIMIT 5
  • 五次迭代后退出循環if i <= x then leave iterate_personalstamm; end if; set i = i + 1; if i <= x then leave iterate_personalstamm; end if; set i = i + 1;
  • SELECT上使用WHERE

提前感謝您嘗試幫助我。 按照存儲過程:

USE `personaldb`;
DROP procedure IF EXISTS `austritt_telintern`;

USE `personaldb`;
DROP procedure IF EXISTS `personaldb`.`austritt_telintern`;
;

DELIMITER $$
USE `personaldb`$$
CREATE DEFINER=`root`@`hidden` PROCEDURE 
`austritt_telintern`()
begin
declare i int default 1;
declare x int default 5;

# cursor for personalDB.personalstamm
declare c_finished int default 0;
declare c_persnr int;
declare c_austritt date;
declare CUR_personalstamm cursor for select persnr, austritt from 
personalDB.personalstamm where austritt is not null;

declare continue handler for not found set c_finished = 1;

create index idx_personalstamm_persnr on `personalstamm`(persnr);
create index idx_telefon_persnr on `telefon`(persnr);

open CUR_personalstamm;
    iterate_personalstamm: loop
        fetch CUR_personalstamm into c_persnr, c_austritt;
        if c_finished = 1 then
            leave iterate_personalstamm;
        end if;
        update personalDB.telefon set telefon.gueltig_bis = c_austritt
        where telefon.persnr = c_persnr and telefon.gueltig_bis is null;
        if i <= x then leave iterate_personalstamm;
        end if;
        set i = i + 1;
    end loop iterate_personalstamm;
close CUR_personalstamm;
end$$

DELIMITER ;
;

實際的選擇/插入代碼看起來很簡單,不應該花費太多時間。

執行以下操作:

  • 在過程之外創建索引。 索引創建一次,而過程可以多次調用
  • 不需要時不要序列化查詢。 在更新中使用連接而不是游標

SQL:

UPDATE telefon
  JOIN personalstamm ON personalstamm.persnr = telefon.persnr
SET telefon.gueltig_bis = personalstamm.austritt
WHERE telefon.gueltig_bis is null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM