状況は次のとおりです。1台のマシンにデータベースの構造をダンプし、2台目のマシンに復元しようとしました。しかし、dbエラーを復元する過程で発生し、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 */;;