迁移MySQL服务器会破坏程序

时间:2012-09-04 01:51:35

标签: mysql stored-procedures hosting

我正从本地客户端转移到使用mysql 5.5的Web服务器,Web服务器有mySQL 5.0.91,我无法移动在我的localhost上运行良好的存储过程。

例如。

CREATE PROCEDURE `add_student`(IN section_id VARCHAR(20), IN student_id  VARCHAR(20))
BEGIN

 DECLARE EXIT HANDLER FOR 1062
    INSERT INTO error_log(status_id,Student_ID, Section_ID, status_message,time_now)
    VALUES('1062',student_id, section_id,' You are already enrolled for this Course, buddy! ', NOW());

 DECLARE EXIT HANDLER FOR 1364
    INSERT INTO error_log(status_id,Student_ID, Section_ID, status_message,time_now)
    VALUES('1364',student_id, section_id,' ???? ', NOW());

SET @section_id=section_id;
SET @student_id=student_id; 

PREPARE STMT FROM 
"INSERT INTO course(SECTION_ID,STUDENT_ID ) VALUES(?,?)";

PREPARE STMT2 FROM 
"INSERT INTO transcript(SECTION_ID,STUDENT_ID) VALUES(?,?)";




EXECUTE STMT USING @section_id,@student_id;
EXECUTE STMT2 USING @section_id,@student_id;

END 

在mysql 5.5中运行良好但是现在它给了我以下错误:#1064 - 你的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在第6行的''附近使用正确的语法。是否还有这个或者我是否需要寻找使用我的localhost所拥有的相同版本的MYSQL的托管?

1 个答案:

答案 0 :(得分:1)

您是如何尝试加载此程序的?如果你在.sql文件中有这个确切的文本,并且正在执行类似mysql < procedure.sql的操作,那肯定会返回这样的错误。

你需要更改语句分隔符,所以mysql不会混淆 - 现在我打赌它认为第一个;结束声明。

程序之前: DELIMITER \\

,最后一行应为:

END\\