0

情况是这样的:我在一台机器上转储了我的数据库结构,并试图恢复第二台机器。但是在恢复数据库的过程中会发生错误,我不知道那部分 sql 代码有什么问题。

这是mysql错误:

ERROR 1064 (42000) at line 5846: 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 'TYPE=HEAP;
     WHILE TRUE DO
        SET _paramList = TRIM(_paramList);
       ' at line 13

需要补充的是,我在 mysql 5.1.59 上转储了 db 结构并尝试在 5.5.30 上恢复。

我已经在 mysql 转储和恢复中尝试了兼容选项,但没有成功搜索互联网。

编辑:

这是整个过程:

DELIMITER ;;
/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 PROCEDURE `ws_core_parameters`(IN is_proc_name CHAR(64), IN is_db_name CHAR(64))
BEGIN
    DECLARE _paramList VARCHAR(800);
    DECLARE _parameter VARCHAR(100);
    SELECT
        CAST(a.param_list AS CHAR(800))
    INTO
        _paramList
    FROM mysql.proc a
    WHERE a.name = is_proc_name
        AND a.db = is_db_name
    LIMIT 1;
    CREATE TEMPORARY TABLE system_proc.__parameters ( s_parameter VARCHAR(20) ) TYPE=HEAP;
    label: WHILE TRUE DO
        SET _paramList = TRIM(_paramList);
        IF(COALESCE(_paramList, '') = '') THEN
            LEAVE label;
        END IF;
        SET _parameter = SUBSTRING_INDEX(_paramList, ',', 1);
        SET _paramList = SUBSTR(_paramList, LENGTH(_parameter)+2);
        INSERT INTO system_proc.__parameters (s_parameter)
            VALUES (
                TRIM(
                    SUBSTRING_INDEX(
                        SUBSTR(_parameter,
                            LENGTH(
                                SUBSTRING_INDEX(_parameter, ' ', 1))+2), ' ', 1)));
    END WHILE label;
    SELECT
        SUBSTR(s_parameter, 1-(
            LENGTH(s_parameter))) AS s_parameter
    FROM system_proc.__parameters WHERE s_parameter != '';
    DROP TABLE system_proc.__parameters;
END */;;
4

1 回答 1

1

将 TYPE=HEAP 更改为 ENGINE=HEAP 或 ENGINE=MEMORY

参考链接:

类型=堆不工作

MYSQL 文档

于 2013-03-12T10:26:26.373 回答