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
和这个插入
INSERT INTO `message` VALUES (\'7\');
并且我收到“列数与行值数不匹配”错误。因为主键是
auto_increment
,它应该可以正常工作。     
已邀请:
通常,当您具有“自动递增”字段时,您不想指定该列的值。这意味着您从
VALUES
中删除了该值 但是,正如Johan指出的,只要表中的列数与列数不匹配,就必须在目标表上指定列列表。 无论如何,在列数或列顺序发生变化的情况下,还是要这样做
INSERT INTO 
message
(p_id)
Values (\'7\')
    
当值的数量不等于列的数量时,必须指定列名称:
INSERT INTO message (p_id) VALUES (\'7\');
    
您需要指定要插入的列。如果不这样做,则数据库将假定您提供的值是每个列的值,并根据模式按照列的确切顺序进行。请尝试以下语句。
INSERT INTO `message` (p_id) VALUES (\'7\');
另外,最好总是在插入语句中指定列。它有助于提高可读性。     
你可以这样做
INSERT INTO `message` VALUES (NULL, \'7\');
这将与列数匹配,并忽略将空插入自动递增ID并插入“ 8”值;     
尝试这个:
INSERT INTO `message` (p_id) VALUES (\'7\');
您没有指定2列,而是要插入1个值。     
也许如果你这样做
INSERT INTO message (p_id) VALUES (\"7\");
    

要回复问题请先登录注册