【问题标题】:Eclipse DTP still doesn't handle delimiter statementsEclipse DTP 仍然不处理分隔符语句
【发布时间】:2014-05-13 17:40:39
【问题描述】:

这个

use sample_db;

CREATE TRIGGER bar_in
BEFORE INSERT ON bar
FOR EACH ROW
BEGIN
     DECLARE foo INT;

END;

失败

您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 在第 5 行的 '' 附近

如何解决这个语法错误(MySQL服务器是5.5)?

触发器是否可能被禁用或类似?

编辑:这是自 2009bugzilla 以来存在的 Eclipse DTP 问题

【问题讨论】:

  • 只需使用 SET foo = "";
  • @Robert Rozas:您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的 'BEGIN SET foo = ""' 附近使用正确的语法
  • 我的错误...这是正确的语法:SET @foo = "";
  • @RobertRozas 我想使用用户变量
  • 嗯....这适用于我的环境:声明 foo int;

标签: mysql eclipse triggers syntax-error eclipse-dtp


【解决方案1】:

我认为错误与分隔符有关。试试这个:

DELIMITER $$

CREATE TRIGGER bar_in
BEFORE INSERT ON bar
FOR EACH ROW
BEGIN
     DECLARE foo INT;
END $$ 

DELIMITER ;

【讨论】:

  • 这会导致“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 'DELIMITER $$ 附近使用的正确语法”
  • @JakubBochenski 您在哪里运行 SQL?你是在 phpMyAdmin 中运行它吗?如果有,是什么版本?
  • 我正在使用 eclipse sql 工作台,将在命令行 l8r 中尝试;像 CREATE TABLE 这样的常规 DDL 工作正常
  • @JakubBochenski CREATE TABLE 不同,因为它不需要更改分隔符,所以它会运行。我不了解 eclipse sql 工作台,但请检查它是否支持 DELIMITER 命令。如果不是,那么恐怕您无法以这种方式创建触发器和存储过程。
  • @JakubBochenski 哦,我没有注意缺少的FOR EACH ROW 行。请添加它。我更新了我的答案并在 MySQL Query Browser 中成功测试了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多