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