【问题标题】:Column count doesn't match with the value count in row 1列计数与第 1 行中的值计数不匹配
【发布时间】:2019-09-18 22:14:21
【问题描述】:

我正在尝试使用随机值填充 mqsql 表。我为此创建了一个存储过程,但是当我执行它时,它给了我错误“列数与第 1 行中的值计数不匹配”。

以下是我尝试过的

存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `GenerateManagerData`()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= 100 DO
INSERT INTO projectManager(id,name,email,contact_number) VALUES (i+ 'M', CAST(i AS CHAR(10)), 'e'+ CAST(i AS CHAR(10))+ '@gmail.com', 'TP' + CAST(i AS CHAR(10)));
SET i = i + 1;
END WHILE;
END

这是我创建的表

CREATE TABLE `projectmanager` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  `contact_number` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email_UNIQUE` (`email`)
);

我已经给出了存储过程中的所有列。请帮我解决这个问题。

【问题讨论】:

  • VALUES (i, 'M', CAST(i AS CHAR(10)), 'e', CAST(i AS CHAR(10)), '@gmail.com', 'TP' , CAST(i AS CHAR(10)))
  • 已编辑添加 04 个带 + 标记的字段。同样的错误来了
  • 使用CONCAT(),而不是+
  • 与错误无关:+ 不是 MySQL 中的字符串连接运算符。使用concat() 函数连接字符串。

标签: mysql stored-procedures mysql-workbench


【解决方案1】:

这是 CAST 函数的问题。使用 CONCAT() 解决了这个问题,

CREATE DEFINER=`root`@`localhost` PROCEDURE `GenerateManagerData`()
BEGIN
DECLARE i INT DEFAULT 38;
WHILE i <= 100 DO
INSERT INTO projectManager(name,email,contact_number) VALUES (CONCAT('M', i), CONCAT('e', i, '@gmail.com'), CONCAT('TP', i));
SET i = i + 1;
END WHILE;
END

【讨论】:

    猜你喜欢
    • 2013-08-24
    • 2020-01-10
    • 2014-01-17
    • 2016-12-10
    • 2013-04-24
    • 1970-01-01
    相关资源
    最近更新 更多