MYSQL语法错误,引用了意外的标识符,应为$end

MYSQL语法错误,引用了意外的标识符,应为$end,mysql,delimiter,Mysql,Delimiter,我试图在我的数据库上链接多个操作,以实现变更回复,从而简化开发/生产环境之间的数据库一致性。我已经用多个命令创建了一个文件,并且出现了一个奇怪的错误,我似乎找不到引用 下面是一个片段: deallocate prepare stmt; END$$ drop procedure if exists SearchByWantListCount; delimiter $$ CREATE DEFINER=`webaccess`@`%` PROCEDURE `SearchByWantListCou

我试图在我的数据库上链接多个操作,以实现变更回复,从而简化开发/生产环境之间的数据库一致性。我已经用多个命令创建了一个文件,并且出现了一个奇怪的错误,我似乎找不到引用

下面是一个片段:

deallocate prepare stmt;

END$$

drop procedure if exists SearchByWantListCount;

delimiter $$

CREATE DEFINER=`webaccess`@`%` PROCEDURE `SearchByWantListCount`(
    IN loggedInUser INT,
    IN filter varchar(255))
BEGIN
分隔符
用红色下划线,我得到了错误信息:

语法错误,引用了意外标识,应为$end

我加了一句

delimiter ;
drop procedure if exists SearchByWantListCount;

这似乎让一切都很愉快……

这是因为当您要使用分隔符时,不需要将分隔符放在$$之前。简单地说$$

您使用的语法定义了分隔符,这在前面已经做过(因为我们可以看到您在结尾使用了分隔符)

之所以“delimiter;”有效,是因为“drop procedure if exists SearchByWantListCount;”末尾的分号被计为分隔符。是否将“delimiter$$”放在此处,如果要重新定义它,则需要在放置行和下一个过程的开始(SearchByWantListCount)之间或在“delimiter$$”之前加一个$$

顺便说一下,您不需要“分隔符”,因为您将$$放在前一个结束符号之后。只需删除$$前面的“分隔符”