• datagrip bug 小记


    datagrip bug 小记

    今天遇到了一个小bug,datagrip 2020.1出现

    [S1000] Attempt to close streaming result set com.mysql.cj.protocol.a.result.ResultsetRowsStreaming@42b0babe that was not registered.
    Only one streaming result set may be open and in use per-connection. Ensure that you have called .close() on any active result sets before attempting more queries.

    查了一下,这是个jet brains 全家桶里都有的bug。 bug

    怎么复现

    非常简单: 在存储过程里然后个循环,然后循环里执行select 查询,然后将结果赋值给另一个变量,call自定义函数。

    CREATE PROCEDURE test_loop()
    BEGIN
        declare p1 bigint;
        declare total bigint;
        declare current varchar(100);
        set p1 = 0;
        select count(*) into total from A_table;
    
        label1: 
        LOOP
            IF p1 >= total THEN
                leave label1;
            END IF;
    
            select id into current from A_table order by id limit 1 offset p1;
    
            select test_func(current);
    
            SET p1 = p1 + 1;
            ITERATE label1;
        END LOOP label1;
        SET @x = p1;
    END;
    
    -- table 
    
    create table A_table
    (
        id   varchar(100),
        create_time datetime default CURRENT_TIMESTAMP,
        index idx_id (id)
    );
    
    -- function
    
    create
        definer = root@`%` function test_func(id varchar(50)) returns varchar(50)
    begin
        return id;
    end;
    
    

    如何修复

    这里我用的是mysql 5.7 所以一下方案只对mysql 5.7 管用:

    更改mysql的驱动,默认选中的是mysql, 要手动改为mysql 5.1

  • 相关阅读:
    jQuery库冲突解决办法
    jquery源码 整体架构
    中文版Chrome浏览器不支持12px以下字体的解决方案
    html5 localStorage
    Git创建分支/GIT提交分支
    Git直接拉取远程分支
    vscode关闭后未打开上次界面的解决办法
    MAC升级nodejs和npm到最新版
    hadoop hue切换中文版
    Hdfs dfs命令使用
  • 原文地址:https://www.cnblogs.com/qulianqing/p/13267771.html
Copyright © 2020-2023  润新知