Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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
Mysql 与具有显示创建功能的服务器的连接中断_Mysql_Sql_Database Connection - Fatal编程技术网

Mysql 与具有显示创建功能的服务器的连接中断

Mysql 与具有显示创建功能的服务器的连接中断,mysql,sql,database-connection,Mysql,Sql,Database Connection,我以前见过在查询错误期间与MySQL服务器的常见断开连接,使用大型数据集等。我没有看到,但现在看到的是运行SHOW CREATE FUNCTION时的消息。该函数只有大约20行长,似乎没有语法错误。我可以删除并重新创建它而不会出现问题(使用备份中的定义)。如果使用不同的名称创建相同的函数,则不会出现错误。但是用原来的名字,我得到了错误。我能做些什么来解决这个问题 有关职能: DELIMITER$$ DROP FUNCTION IF EXISTS `check_address`$$ CREAT

我以前见过在查询错误期间与MySQL服务器的常见断开连接,使用大型数据集等。我没有看到,但现在看到的是运行
SHOW CREATE FUNCTION
时的消息。该函数只有大约20行长,似乎没有语法错误。我可以删除并重新创建它而不会出现问题(使用备份中的定义)。如果使用不同的名称创建相同的函数,则不会出现错误。但是用原来的名字,我得到了错误。我能做些什么来解决这个问题

有关职能:

DELIMITER$$

DROP FUNCTION IF EXISTS `check_address`$$

CREATE FUNCTION `check_address`(
    _loan_id BIGINT,
    _address1 VARCHAR(255),
    _address2 VARCHAR(255),
    _city VARCHAR(255),
    _state VARCHAR(255),
    _zip VARCHAR(255)
    ) RETURNS tinyint(1)
    DETERMINISTIC
    SQL SECURITY INVOKER
BEGIN
    
    DECLARE _cur_address1 VARCHAR(255);
    DECLARE _cur_address2 VARCHAR(255);
    DECLARE _cur_city VARCHAR(255);
    DECLARE _cur_state VARCHAR(255);
    DECLARE _cur_zip VARCHAR(255);
    DECLARE _is_ok TINYINT(1);
    DECLARE CONTINUE HANDLER FOR NOT FOUND BEGIN SET _is_ok = NULL; END;
    
    SELECT
        property_address.address_1,
        property_address.address_2,
        property_address.city,
        property_address.state_abrv,
        property_address.zip_id
    INTO 
        _cur_address1,
        _cur_address2,
        _cur_city,
        _cur_state,
        _cur_zip
    FROM property_address WHERE property_address.loan_id = _loan_id;
    
    SELECT  IF(LOWER(TRIM(BOTH FROM _cur_address1)) = LOWER(TRIM(BOTH FROM _address1)), 0, 1) +
        IF(LOWER(TRIM(BOTH FROM _cur_address2)) = LOWER(TRIM(BOTH FROM _address2)), 0, 1) +
        IF(LOWER(TRIM(BOTH FROM _cur_city)) = LOWER(TRIM(BOTH FROM _city)), 0, 1) +
        IF(LOWER(TRIM(BOTH FROM _cur_state)) = LOWER(TRIM(BOTH FROM _state)), 0, 1) +
        IF(LOWER(TRIM(BOTH FROM _cur_zip)) = LOWER(TRIM(BOTH FROM _zip)), 0, 1)
    INTO _is_ok;
    
    RETURN _is_ok;
    
END$$
编辑:其他有趣的详细信息:

这些工作:

  • 显示创建函数dbname.check\u地址
  • 显示创建函数dbname。`check_address`
  • 显示创建函数`dbname`。检查地址
这并不是:

  • 显示创建函数`dbname`.`check_address`
mysql的输出--version(是的,它很旧--不在我的控制之下):


哇,这毫无意义。在回标记中分隔标识符不会改变SQL语句的执行方式或返回的结果。它只用于解析。我从未见过你所描述的。我建议查看MySQL服务器错误日志,看看是否遇到了断言,然后重新启动mysqld进程。在显示其他函数时,您是否看到了相同的问题?也就是说,如果您同时对模式和函数进行定界,但不使用其他定界组合,则会丢失连接?另一个问题:当您看到此问题时,您使用什么客户端?是
mysql
客户端还是类似于GUI的工作台,还是其他连接器代码?我想知道在将查询发送到MySQL服务器之前,是否可以通过客户端中的一些代码重写查询。(编辑:哦,我知道你提到了
mysql
client,这回答了我的问题)我没有主意了。除非错误日志中有线索,否则我只能建议医生从一个老笑话中给出建议:男人去看医生,说“我这样做很疼”,然后挥动手臂。医生说,“那就别那么做。”好吧,那么这可能是SQLYog中的一个bug。可能它正在进行某种查询重写,或者它没有正确处理结果集。无论如何,这似乎不是编码问题,只是商业应用程序的技术支持问题。我建议你联系Webyog。
mysql  Ver 14.14 Distrib 5.6.35-80.0, for Linux (x86_64) using  5.1