【问题标题】:Migrating MySQL servers breaks procedures迁移 MySQL 服务器会中断程序
【发布时间】:2012-08-28 15:54:39
【问题描述】:

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

例如。

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 行的 '' 附近使用正确的语法。这是否有任何问题,或者我是否需要寻找使用与我的本地主机相同版本的 MYSQL 的主机?

【问题讨论】:

    标签: mysql stored-procedures hosting


    【解决方案1】:

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

    您需要更改语句分隔符,因此 mysql 不会感到困惑——现在我打赌它认为第一个 ;结束语句。

    在程序执行之前: DELIMITER \\

    最后一行应该是:

    END\\

    【讨论】:

    • 看起来他们不提供对存储过程的支持~_~
    • 啊,所以是你的托管服务提供商有问题?
    猜你喜欢
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    相关资源
    最近更新 更多