MySql 中的警告 1072 - 键列“名称”表中不存在`

发布于 2024-12-05 20:31:34 字数 803 浏览 1 评论 0原文

收到警告 0 行受影响,1 条警告: 1072 表中不存在键列“名称” 我不知道这是什么意思。有人有解释吗?

表/SP如下

CREATE TABLE IF NOT EXISTS `sectors`
(
  `id`        INT(10) UNSIGNED   NOT NULL AUTO_INCREMENT ,
  `sector`    VARCHAR(25)        NOT NULL ,
                                                                           --
  PRIMARY KEY (`id`) ,
  UNIQUE  INDEX `sector_idx` USING BTREE (`sector` ASC)
);
DELIMITER $$
CREATE PROCEDURE `AddSector` (IN sector VARCHAR(25),
                              OUT result BOOLEAN)
  MODIFIES SQL DATA
BEGIN
  DECLARE CONTINUE HANDLER FOR SQLWARNING, SQLEXCEPTION SET result = FALSE;
  SET result = TRUE;
                                                                           --
  INSERT INTO `sectors` (`sector`) VALUES (sector);
  COMMIT;
END $$

Getting the warning 0 row(s) affected, 1 warning(s):
1072 Key column 'name' doesn't exist in table
And I do not know what it means. Does anybody have an explaination?

The table/SP is as follows

CREATE TABLE IF NOT EXISTS `sectors`
(
  `id`        INT(10) UNSIGNED   NOT NULL AUTO_INCREMENT ,
  `sector`    VARCHAR(25)        NOT NULL ,
                                                                           --
  PRIMARY KEY (`id`) ,
  UNIQUE  INDEX `sector_idx` USING BTREE (`sector` ASC)
);
DELIMITER $
CREATE PROCEDURE `AddSector` (IN sector VARCHAR(25),
                              OUT result BOOLEAN)
  MODIFIES SQL DATA
BEGIN
  DECLARE CONTINUE HANDLER FOR SQLWARNING, SQLEXCEPTION SET result = FALSE;
  SET result = TRUE;
                                                                           --
  INSERT INTO `sectors` (`sector`) VALUES (sector);
  COMMIT;
END $

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眉黛浅 2024-12-12 20:31:34

将过程更改为:

DELIMITER $

CREATE PROCEDURE `AddSector` (IN pSector VARCHAR(25),  <<-- fix nameclash here
                              OUT result BOOLEAN)
  MODIFIES SQL DATA
BEGIN
  DECLARE CONTINUE HANDLER FOR SQLWARNING, SQLEXCEPTION SET result = FALSE;
  SET result = TRUE;

  INSERT INTO `sectors` (`sector`) VALUES (pSector);  <<-- and here
  --  COMMIT;  <<-- You don't need a commit.
END $

存储过程中的所有内容都已在隐式事务中运行,因此不需要提交,并且实际上可能是错误(不确定)
分隔符;

Change the procedure to:

DELIMITER $

CREATE PROCEDURE `AddSector` (IN pSector VARCHAR(25),  <<-- fix nameclash here
                              OUT result BOOLEAN)
  MODIFIES SQL DATA
BEGIN
  DECLARE CONTINUE HANDLER FOR SQLWARNING, SQLEXCEPTION SET result = FALSE;
  SET result = TRUE;

  INSERT INTO `sectors` (`sector`) VALUES (pSector);  <<-- and here
  --  COMMIT;  <<-- You don't need a commit.
END $

All stuff inside a stored proc is already run inside an implicit transaction, so the commit is not needed, and may actually be an error (not sure).
DELIMITER ;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文