当我调用以下存储过程时,我收到此错误: 错误1064(42000):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行附近的'01:53:26,1)附近使用正确的语法
CREATE PROCEDURE `update_xyz` (IN col_name VARCHAR(30), IN ip_add VARCHAR(24), IN lat FLOAT , IN longit FLOAT)
BEGIN
SET @col = col_name;
SET @a_ip = ip_add;
SET @lati = lat;
SET @longitu = longit;
IF ROW_COUNT()=0 THEN
SET @time1 = CURRENT_TIMESTAMP();
SET @sql_text2 = concat('INSERT INTO table1 (ip,latitude,longitude,date,',@col,') VALUES (',INET_ATON(@a_ip),',', @lati,',', @longitu,',', @time1,',1)');
PREPARE stmt2 FROM @sql_text2;
EXECUTE stmt2;
DEALLOCATE PREPARE stmt2;
END IF;
END
但是,如果我删除@ time1,插入会继续将DATETIME字段保留为NULL。
答案 0 :(得分:1)
change
//SET @time1 = CURRENT_TIMESTAMP();//remove this line
SET @sql_text2 = concat('INSERT INTO table1 (ip,latitude,longitude,date,',@col,') VALUES (',INET_ATON(@a_ip),',', @lati,',', @longitu,',', @time1,',1)');
replace this line.
SET @sql_text2 = concat('INSERT INTO table1 (ip,latitude,longitude,date,',@col,') VALUES (',INET_ATON(@a_ip),',', @lati,',', @longitu,',', CURRENT_TIMESTAMP(),',1)');
答案 1 :(得分:0)
当我调试你的程序和动态查询然后我知道 您的会话变量正在创建以下查询
INSERT INTO table1 (ip,latitude,longitude,date,a)
VALUES (3232235976,45.67,44.22,2017-02-21 12:30:00,1)
这意味着日期列数据应该在单引号中,如下所示 '2017-02-21 00:00:00'
然后你将摆脱你的错误
玩得开心: - )