Mysql 存储过程返回ER\u BAD\u NULL\u错误
在MySql 5.7上,我想运行这个过程,从article表中获取文章的tag1并将它们插入article_标记表中: 但是,当我运行该过程时,我得到: 错误1048 23000:列“tag”不能为null 这是一个可复制的例子Mysql 存储过程返回ER\u BAD\u NULL\u错误,mysql,stored-procedures,Mysql,Stored Procedures,在MySql 5.7上,我想运行这个过程,从article表中获取文章的tag1并将它们插入article_标记表中: 但是,当我运行该过程时,我得到: 错误1048 23000:列“tag”不能为null 这是一个可复制的例子 这个问题困扰了我好几个小时。因此,请欣赏关于为什么会发生这种情况以及如何解决它的提示。这是一个空集tag1=从id=x的文章中选择tag1@AlbertoMoro为什么为空?不要给声明的变量与列同名-在整个代码中将声明的变量tag1更改为vtag1,它应该可以工作。这不
这个问题困扰了我好几个小时。因此,请欣赏关于为什么会发生这种情况以及如何解决它的提示。这是一个空集tag1=从id=x的文章中选择tag1@AlbertoMoro为什么为空?不要给声明的变量与列同名-在整个代码中将声明的变量tag1更改为vtag1,它应该可以工作。这不是一个把戏,mysql根本无法区分具有相同名称的列、变量和参数。由编码人员提供信息。插入。。。关于重复密钥更新
DELIMITER $$
CREATE PROCEDURE dt1()
BEGIN
DECLARE maxid INT;
DECLARE x INT;
DECLARE tag1 VARCHAR(30);
DECLARE ntag1 int;
SET maxid = (SELECT MAX(id) FROM `article`);
SET x = (SELECT MIN(id) FROM ` article`) ;
WHILE x<= maxid DO
SET tag1 = (SELECT tag1 from `article` WHERE id=x);
call debug_msg(TRUE, tag1);
SET ntag1 = (SELECT count(*) from `article_tag` WHERE tag=tag1);
IF ntag1 = 0 THEN INSERT INTO `article_tag` (tag, slug, frequency) VALUES (tag1, tag1, 1);
ELSE UPDATE ` article_tag` SET frequency = frequency + 1 WHERE tag=tag1 ;
END IF;
SET x = x + 1;
END WHILE;
END$$
SELECT count(*) from `article` WHERE tag1 IS NULL;
+----------+
| count(*) |
+----------+
| 0 |
+----------+