MySQL查询未知错误

时间:2018-01-23 14:44:26

标签: mysql sql

我正在尝试在MySQL服务器上运行此查询:

CREATE  PROCEDURE forum.eventlog_create(
i_UserID      INT,
i_Source      VARCHAR(128),
i_Description TEXT,
i_Type        INT,
i_UTCTIMESTAMP DATETIME)
MODIFIES SQL DATA
BEGIN

INSERT INTO forum.EventLog
(UserID, Source, Description, ´Type´)
VALUES (i_UserID, i_Source, i_Description, i_Type);

END;

然而,在执行它时,我收到以下错误:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 12

我无法修复它。我试图寻找一个解决方案,并问了一个同事,但我们无法找到解决方案,最后我决定在这里问它。

我收到错误代码1064但是''附近的正确语法是消息,我不明白问题可能是什么。如果说哪种语法给出错误会更容易,我只得到行号。 谢谢你的时间

2 个答案:

答案 0 :(得分:3)

由类型周围的转义字符引起的一个错误应该是反引号或丢弃,您应该尝试设置分隔符https://dev.mysql.com/doc/refman/5.7/en/stored-programs-defining.html

delimiter $$

CREATE  PROCEDURE eventlog_create(
i_UserID      INT,
i_Source      VARCHAR(128),
i_Description TEXT,
i_Type        INT,
i_UTCTIMESTAMP DATETIME)
MODIFIES SQL DATA
BEGIN

INSERT INTO forum.EventLog
(UserID, Source, Description, `Type`)
VALUES (i_UserID, i_Source, i_Description, i_Type);

END $$

delimiter ;

答案 1 :(得分:0)

试试这个

DELIMITER $$
CREATE PROCEDURE forumeventlog_create() 
BEGIN 
declare i_UserID INT DEFAULT 0; 
declare i_Source VARCHAR(128) DEFAULT null; 
declare i_Description TEXT DEFAULT null; 
declare i_Type INT DEFAULT 0; 
declare i_UTCTIMESTAMP DATETIME DEFAULT null ; 

INSERT INTO forum.EventLog
(UserID, Source, Description, ´Type´)
VALUES (i_UserID, i_Source, i_Description, i_Type);

END $$
DELIMITER ;

你可以通过

来调用它
CALL forumeventlog_create()

OR

 DELIMITER $$
   CREATE PROCEDURE forumeventlog_create(i_UserID INT,i_Source VARCHAR(128),i_Description TEXT,i_Type INT,i_UTCTIMESTAMP DATETIME) 
            BEGIN 
            INSERT INTO forum.EventLog 
    (UserID, Source, Description, ´Type´) 
        VALUES (i_UserID, i_Source, i_Description, i_Type); 

            END $$
            DELIMITER ;