Количество столбцов не соответствует значению в строке 1
Итак, я прочитал другие сообщения, но этот вопрос уникален. Таким образом, этот файл дампа SQL имеет это как последнюю запись.
INSERT INTO `wp_posts` VALUES(2781, 3, '2013-01-04 17:24:19', '2013-01-05 00:24:19'.
Я пытаюсь вставить это значение в таблицу...
INSERT INTO `wp_posts` VALUES(5, 5, '2005-04-11 09:54:35', '2005-04-11 17:54:35'
это дает мне ошибку: "Количество столбцов не соответствует счету значений в строке 1." Поэтому я проиграл идею о том, как здесь применяются столбцы и строки.
Значит ли 2781,3
строка 2781 и столбец 3? И не означает 5,5
строка 5 и столбец 5?
Ответы
Ответ 1
Ошибка означает, что вы предоставляете не так много данных, поскольку таблица wp_posts
содержит столбцы. И теперь механизм БД не знает, в какие столбцы помещать ваши данные.
Чтобы преодолеть это, вы должны указать имена столбцов, которые хотите заполнить. Пример:
insert into wp_posts (column_name1, column_name2)
values (1, 3)
Посмотрите определение таблицы и посмотрите, какие столбцы вы хотите заполнить.
И insert
означает, что вы вставляете новую запись. Вы не изменяете существующую. Используйте update
для этого.
Ответ 2
- вы пропустили запятую между двумя значениями или именем столбца
- вы добавляете дополнительные значения или дополнительное имя столбца
Ответ 3
Вы также должны посмотреть на новые триггеры.
MySQL не показывает имя таблицы в ошибке, поэтому вы действительно остаетесь в беде. Вот рабочий пример:
use test;
create table blah (id int primary key AUTO_INCREMENT, data varchar(100));
create table audit_blah (audit_id int primary key AUTO_INCREMENT, action enum('INSERT','UPDATE','DELETE'), id int, data varchar(100) null);
insert into audit_blah(action, id, data) values ('INSERT', 1, 'a');
select * from blah;
select * from audit_blah;
truncate table audit_blah;
delimiter //
/* I've commented out "id" below, so the insert fails with an ambiguous error: */
create trigger ai_blah after insert on blah for each row
begin
insert into audit_blah (action, /*id,*/ data) values ('INSERT', /*NEW.id,*/ NEW.data);
end;//
/* This insert is valid, but you'll get an exception from the trigger: */
insert into blah (data) values ('data1');
Ответ 4
MySQL также сообщит, что "Количество столбцов не соответствует счету значений в строке 1", если вы попытаетесь вставить несколько строк без ограничения наборов строк в разделе VALUES с помощью круглых скобок, например:
INSERT INTO `receiving_table`
(id,
first_name,
last_name)
VALUES
(1002,'Charles','Babbage'),
(1003,'George', 'Boole'),
(1001,'Donald','Chamberlin'),
(1004,'Alan','Turing'),
(1005,'My','Widenius');
Ответ 5
Вы можете устранить ошибку, указав имена столбцов, на которые вы влияете.
> INSERT INTO table_name (column1,column2,column3)
'VALUES(50,'Jon Snow','Eye');'
обратите внимание, что точку с запятой следует добавлять только после оператора, предоставляющего значения