我有大約2年的mySQL在我的腰帶,但我第一次潛入存儲過程爲我的網站創建一個內部分析工具。我通常善於跟蹤SQL錯誤,但這個問題正在困擾着我。MySQL存儲過程創建錯誤
我得到的錯誤是這樣的:
1064 - 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 '' at line 3
這是我執行收到此錯誤代碼:
CREATE PROCEDURE STORE_ANALYTICS (IN chain VARCHAR(300))
BEGIN
UPDATE _analytics_clicks
SET chainCount = (chainCount + 1)
WHERE visitChain = chain;
IF SELECT ROW_COUNT() = 0 THEN
INSERT INTO _analytics_clicks (visitChain, chainCount)
VALUES (chain, 1);
END IF;
END|
值得注意的是我執行此之前,我執行
DELIMITER |
我想改變的表的結構是這樣的:
chainID int(11) auto_increment
visitChain varchar(300)
chainCount int(11)
當我自己執行第3行時,將visitChain = chain替換爲visitChain ='0'(0是我發送的測試鏈),該命令正常運行並且chainCount遞增。
爲什麼我得到這個錯誤/存儲過程沒有被創建的任何想法?
謝謝, 馬特
編輯:
在SQL命令包括分隔符:
DELIMITER |
CREATE PROCEDURE STORE_ANALYTICS (IN chain VARCHAR(300))
BEGIN
UPDATE _analytics_clicks SET chainCount = (chainCount+1) WHERE visitChain=chain;
IF ROW_COUNT() = 0 THEN
INSERT INTO _analytics_clicks (visitChain, chainCount) VALUES (chain, 1);
END IF;
END|
DELIMITER ;
給了我這個錯誤: 致命錯誤:在c突破300秒最大執行時間: \ wamp \ apps \ phpmyadmin3.2.0.1 \ libraries \ import \ sql.php on line 119
編輯原始帖子,因爲當我在這裏發佈代碼時,代碼變得混亂起來,但是在SQL陳述中添加分隔符使其凍結。 – Matt 2011-06-15 03:36:21
你如何提交給MySQL?也許那個管道正在妨礙 - 命令行解析爲一個實際的管道?嘗試直接在mysql命令行客戶端中粘貼文件的內容。 – Bohemian 2011-06-15 03:42:54
我使用PHP myadmin,我會嘗試不同的分界符,但我不認爲這會是一個問題。改變了Delim,仍然是我最後一次編輯的問題。嗯 – Matt 2011-06-15 04:10:44