MySql列数与第1行的值计数不匹配,但所有值都已填充

时间:2016-09-24 12:31:39

标签: mysql

我有一个用于用户记录的小型数据库,当我插入一个新用户时,我希望自动生成id,所以我使用以下sql脚本创建了我的数据库:

CREATE TABLE `members` (
  `idmembers` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(145) DEFAULT NULL,
  `password` varchar(545) DEFAULT NULL,
  `clearance` int(5) DEFAULT NULL,
  `profilepic` text,
  `createdby` varchar(45) DEFAULT NULL,
  `friends` varchar(545) DEFAULT NULL,
  PRIMARY KEY (`idmembers`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

以及以下触发器:

CREATE DEFINER=`root`@`localhost` TRIGGER `fuhrergroup`.`members_BEFORE_INSERT` BEFORE INSERT ON `members` FOR EACH ROW
BEGIN
INSERT INTO members VALUES (NULL);
SET NEW.idmembers = CONCAT('F', LPAD(LAST_INSERT_ID(), 3, '0'));
END

但是当我想插入时:

INSERT INTO fuhrergroup.members (idmembers, username, password, clearance, profilepic, createdby, friends) VALUES (NULL, 'admin', 'secret', '5', 'aa', 'System', '')

我总是得到: 错误代码:1136。列数与第1行的值计数不匹配

谷歌搜索并没有真正帮助

1 个答案:

答案 0 :(得分:1)

您的触发器查询不正确:

INSERT INTO members VALUES (NULL);

您应该告诉MySQL哪个列必须成为NULL

INSERT INTO members (columnname) VALUES (NULL);