Подтвердить что ты не робот

Количество столбцов не соответствует значению в строке 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?

4b9b3361

Ответ 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');'

обратите внимание, что точку с запятой следует добавлять только после оператора, предоставляющего значения