存储过程返回ER_BAD_NULL_ERROR

时间:2019-07-04 15:44:36

标签: mysql stored-procedures

MySql 5.7 上,我想运行此过程,该过程应该从tag1表中提取article条文章,并将其插入article_tag中表格:

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$$

我可以确认tag1的值都不为空:

    SELECT count(*) from `article` WHERE tag1 IS NULL;
    +----------+
    | count(*) |
    +----------+
    |        0 |
    +----------+

但是,当我运行该过程时,我得到:

  

错误1048(23000):“标记”列不能为空

这是一个可复制的示例。

https://www.db-fiddle.com/f/3ymPtabSksRUMSBep7SyX8/5

这个问题困扰着我几个小时。因此,请欣赏提示,了解发生这种情况的原因以及如何解决?

0 个答案:

没有答案