【发布时间】:2011-06-15 02:22:29
【问题描述】:
我拥有大约 2 年的 mySQL 经验,但我第一次深入研究存储过程,以便为我的网站创建一个内部分析工具。我通常擅长追踪 SQL 错误,但这个错误让我望而却步。
我得到的错误是这样的:
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 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 ;
给了我这个错误: 致命错误:在第 119 行的 C:\wamp\apps\phpmyadmin3.2.0.1\libraries\import\sql.php 中超过了 300 秒的最大执行时间
【问题讨论】: