Счетчик столбцов SQL не соответствует ошибке подсчета значений - PullRequest
8 голосов
/ 21 апреля 2011

У меня есть эта таблица:

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.

Ответы [ 6 ]

12 голосов
/ 21 апреля 2011

Обычно, когда у вас есть поле с автоинкрементом, вы не хотите указывать значение для этого столбца.Это означает, что вы удаляете это значение из VALUES

Однако, как указывает Йохан, всякий раз, когда количество столбцов в таблице не совпадает с количеством столбцов, вы должны указать список столбцов в целевой таблице.

В любом случае рекомендуется делать это в случае изменения количества столбцов или порядка столбцов

INSERT INTO 
message
(p_id)
Values ('7')
8 голосов
/ 21 апреля 2011

Вы должны указать имена столбцов, когда количество значений не равно количеству столбцов:

INSERT INTO message (p_id) VALUES ('7');
4 голосов
/ 21 апреля 2011

Вам необходимо указать столбцы, в которые вы вставляете.Если вы этого не сделаете, база данных предполагает, что вы предоставляете значения для каждого столбца и в точном порядке столбцов в соответствии со схемой.Попробуйте следующее утверждение.

INSERT INTO `message` (p_id) VALUES ('7');

Кроме того, всегда полезно указывать столбцы в операторе вставки.Это помогает для удобочитаемости.

1 голос
/ 30 мая 2017

Вы можете сделать это

INSERT INTO `message` VALUES (NULL, '7');

Это будет соответствовать количеству столбцов и игнорировать пустую вставку в идентификатор автоматического приращения и вставить значение auto increment;

0 голосов
/ 21 апреля 2011

возможно, если вы сделаете это

INSERT INTO message (p_id) VALUES ("7");
0 голосов
/ 21 апреля 2011

Попробуйте это:

INSERT INTO `message` (p_id) VALUES ('7');

Вы не указываете столбцы, в которых есть 2, и пытаетесь вставить 1 значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...