【问题标题】:Data Too Long for column列的数据太长
【发布时间】:2020-11-19 06:43:11
【问题描述】:

请帮助我为什么会收到错误 Data too long for the column,如果我替换 SET x = x+1 则没有错误,但 x = x+2 有 data too long 错误。

CREATE DEFINER=`root`@`localhost` PROCEDURE `LoopDemoTest`()
BEGIN
    DECLARE x INT;
    DECLARE str1 text;
    
    SET x = 1;
    SET str1 = '';
    
    DISP: LOOP
            SET x = x + 2;
        IF (x MOD 2) THEN
            SET str1 = CONCAT(str1, x, ',');
        ELSEIF (x > 10) THEN
            LEAVE DISP;
        END IF;
    END LOOP;
    SELECT str1;
END

【问题讨论】:

  • 当您为无法存储该数据的列插入更多数据时,会出现“列的数据太长”错误。例如 - 如果您的数据类型为 varchar(6),这意味着它只存储 6 个字符。因此,如果您给出的字符数超过 6 个,则会报错。 tutorialspoint

标签: mysql


【解决方案1】:
  1. 执行永远不会落入 ELSEIF,因为 IF 条件始终为真。使用 2 个单独的 IF。

  2. 标签在 END LOOP 处丢失,必须是 END LOOP DISP。

CREATE DEFINER=`root`@`localhost` PROCEDURE `LoopDemoTest`()
BEGIN
    DECLARE x INT;
    DECLARE str1 text;
    
    SET x = 1;
    SET str1 = '';
    
    DISP: LOOP
            SET x = x + 2;
        IF (x MOD 2) THEN
            SET str1 = CONCAT(str1, x, ',');
        END IF;
        IF (x > 10) THEN
            LEAVE DISP;
        END IF;
    END LOOP DISP;
    SELECT str1;
END

fiddle

【讨论】:

  • 非常感谢,是的,因为 if 条件造成了问题
猜你喜欢
  • 2021-05-09
  • 2021-11-06
  • 1970-01-01
  • 2023-02-08
  • 2013-09-24
  • 2011-10-04
  • 2012-11-14
  • 2015-10-15
  • 1970-01-01
相关资源
最近更新 更多