Хранимая процедура возвращает ER_BAD_NULL_ERROR - PullRequest
2 голосов
/ 04 июля 2019

На 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): Столбец 'tag' не может быть нулевым

Вот воспроизводимый пример.

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

Эта проблема беспокоит меня часамиТак что оцените подсказки о том, почему это происходит и как это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...