MySql 触发语法错误 1064 空单引号

Posted

技术标签:

【中文标题】MySql 触发语法错误 1064 空单引号【英文标题】:MySql Trigger Syntax Error 1064 Empty Single Quotes 【发布时间】:2018-03-18 15:22:11 【问题描述】:

我正在尝试在 mysql 5.1.41 中执行触发语句,但我遇到了一个超出我理解范围的错误。任何帮助将不胜感激。

以下是触发代码:

create TRIGGER populate_modality_trigger AFTER INSERT on series
FOR EACH ROW BEGIN
DECLARE x int;

select count(*) into x from lu_modality_alias l WHERE l.modality=NEW.modality;
IF (x  =0 OR x is NULL) THEN
    INSERT INTO lu_modality_alias 
    set modality = NEW.modality,
    modality_alias  = NEW.modality
;
END if;
end;

当我运行上面的代码时,我得到以下错误:

MySQL 说:文档 #1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的 '' 附近使用正确的语法

有趣的是,当我从 Naviacat 查询编辑器执行相同的代码时,它成功运行并创建了触发器。 但是 phpMyAdmin sql 也失败了。

【问题讨论】:

您需要更改分隔符。首先 ;正在结束 CREATE 语句 非常感谢,问题解决了 【参考方案1】:

您需要更改分隔符,以便 MySql 解析器不会在第一个分号处结束 CREATE 语句解析

delimiter //

create TRIGGER populate_modality_trigger AFTER INSERT on series
FOR EACH ROW BEGIN
DECLARE x int;

select count(*) into x from lu_modality_alias l WHERE l.modality=NEW.modality;
IF (x  =0 OR x is NULL) THEN
    INSERT INTO lu_modality_alias 
    set modality = NEW.modality,
    modality_alias  = NEW.modality
;
END if;
end //

delimiter ;

【讨论】:

以上是关于MySql 触发语法错误 1064 空单引号的主要内容,如果未能解决你的问题,请参考以下文章

MySQL - 在第 1 行附近创建触发器错误 1064

空字符串无法解释的MySQL错误#1064创建更新触发器后?

MySQL 触发语法错误

ERROR 1064 (42000)MySQL中使用mysqladmin或set修改root密码时提示语法错误

mysql数据库出现错误代码1064是啥原因?

'的语法错误?