SQL列计数与值计数错误不匹配

Tow*_*wer 10 mysql sql

我有这张桌子:

CREATE TABLE `message` (
    `m_id` INT(11) NOT NULL AUTO_INCREMENT,
    `p_id` VARCHAR(30) NOT NULL,
    PRIMARY KEY (`m_id`)
)
ENGINE=InnoDB
ROW_FORMAT=DEFAULT
Run Code Online (Sandbox Code Playgroud)

这个插入

INSERT INTO `message` VALUES ('7');
Run Code Online (Sandbox Code Playgroud)

我收到"列数与行值计数不匹配"错误.它应该工作正常,因为主键是auto_increment.

Con*_*rix 14

通常,当您具有"自动递增"字段时,您不希望指定该列的值.这意味着您从中删除该值VALUES

但正如Johan指出的那样,只要表中的列数与列数不匹配,就必须在目标表上指定列列表.

如果列数或列顺序发生变化,无论如何都要做好

INSERT INTO 
message
(p_id)
Values ('7')
Run Code Online (Sandbox Code Playgroud)


Dav*_*ang 9

当值的数量不等于列数时,必须指定列名:

INSERT INTO message (p_id) VALUES ('7');
Run Code Online (Sandbox Code Playgroud)


yas*_*nth 5

你可以这样做

INSERT INTO `message` VALUES (NULL, '7');
Run Code Online (Sandbox Code Playgroud)

这将匹配列数并忽略空插入到自动增量id并插入值auto increment