2012-10-20 152 views
1

我试图在我的主机mysqladmin页面上执行以下代码。MySQL语法错误

CREATE PROCEDURE `follow`(IN in_follower INT(11), IN in_followee VARCHAR(45)) 
BEGIN 
INSERT INTO follower (follower_id, followee_id) VALUES (in_follower, (SELECT user_id FROM user WHERE username = in_followee)); 
END 

我得到的错误是:

#1064 - 你在你的SQL语法错误;检查与您的MySQL服务器版本对应的手册,在第3行使用正确的语法“'''

为什么在这里发生此错误?当我在MySQL Workbench中使用该代码时,它运行良好。

+0

你可能需要设置在中mysqladmin控制台的备用'DELIMITER'。它是phpmyadmin还是别的?如何完成取决于客户端。 MySQL命令行客户端有一个命令'DELIMITER',phpmyadmin有一个输入字段来设置,你的Web控制台可能有不同的方法。 –

+0

确实是phpmyadmin – RichardG

+0

实际上,在这种情况下,您可以删除'BEGIN'和'END',而不用担心语句分隔符... – eggyal

回答

2

尝试thisone,

DELIMITER $$ 
CREATE PROCEDURE `follow` 
(
    IN in_follower INT (11) , 
    IN in_followee VARCHAR(45) 
) 
BEGIN 
     INSERT INTO follower (follower_id , followee_id) 
     SELECT in_follower AS follower_id, user_id 
     FROM user 
     WHERE username = in_followee; 
END$$ 
DELIMITER ; 
+1

我试过了,得到了以下错误:#1064 - 你的SQL语法有错误;检查对应于你的MySQL服务器版本的手册正确的语法使用近1行 – RichardG

+1

'DELIMITER $$ CREATE PROCEDURE'follow' ( IN in_follower INT(11), ' 这不会在phpMyAdmin工作。它有自己的分隔符输入字段,因为'DELIMITER'作为命令特定于MySQL命令行客户端。 –

+0

尝试删除分隔符并查看它是否有效,@MichaelBerkowski让我下载wamp以便我可以测试它:) –