我有一些存儲過程和一個在MySQL 5.5.8中工作良好但由於某種原因在5.1中不起作用的觸發器。錯誤描述不足以讓我找出問題所在。這裏是代碼和錯誤。在MySQL 5.5.8中編寫的存儲過程不能在5.1中工作
CREATE PROCEDURE `cg_getMatchingContent`(
MatchTerm VARCHAR(255),
MaxResults INT)
BEGIN
SELECT * FROM (
SELECT t.*, INSTR(t.`Title`,MatchTerm) as Pos
FROM cg_content t) c
WHERE Pos>0 ORDER BY Pos LIMIT 0, MaxResults;
END
錯誤:您的SQL語法錯誤;檢查對應於你的MySQL服務器版本的在線使用近「的maxResults」正確的語法手冊8
DELIMITER ;;
CREATE TRIGGER `cg`.`cg_content_UrlDup_ConstTrig`
BEFORE INSERT ON `cg`.`cg_content`
FOR EACH ROW
Begin
DECLARE errorString VARCHAR(500);
DECLARE insert_error CONDITION FOR SQLSTATE '99001';
IF new.Url = '' THEN
SET errorString = CONCAT('Url cannot be blank
Title: ' , new.Title);
SIGNAL insert_error
SET MESSAGE_TEXT=errorString;
END if;
IF Exists(SELECT id FROM cg.cg_content WHERE Url=new.Url) THEN
SET errorString = CONCAT('Url is not unique
Title: ' , new.Title , '
Url: ' + new.Url);
SIGNAL insert_error
SET MESSAGE_TEXT=errorString;
End if;
End ;;
錯誤:你在你的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊 'insert_error SET MESSAGE_TEXT = Errorstring,則; END IF; IF' 第10行
如果'MySQL 5.1'會發出有意義的錯誤,例如:「似乎你正試圖在LIMIT中使用局部變量,對不起,我們目前還不支持這個功能。 」。 – Quassnoi 2012-02-07 19:34:43