Kolomtelling komt niet overeen met waardetelling in rij 1

Dus ik heb de andere berichten gelezen, maar deze vraag is uniek. Dus dit SQL-dumpbestand heeft dit als laatste item.

INSERT INTO `wp_posts` VALUES(2781, 3, '2013-01-04 17:24:19', '2013-01-05 00:24:19'.

Ik probeer deze waarde in de tabel in te voegen…

INSERT INTO `wp_posts` VALUES(5, 5, '2005-04-11 09:54:35', '2005-04-11 17:54:35'

ik krijg de foutmelding “Kolomtelling komt niet overeen met waardetelling in rij 1.” Dus ik ben verdwaald in het concept van hoe de kolom en rij hier van toepassing zijn.

Betekent 2781,3 niet rij 2781 en kolom 3? En betekent 5,5 niet rij 5 en kolom 5?


Antwoord 1, autoriteit 100%

De fout betekent dat u niet zoveel gegevens verstrekt als de tabel wp_posts kolommen bevat. En nu weet de DB-engine niet in welke kolommen uw gegevens moeten worden geplaatst.

Om dit te verhelpen, moet u de namen opgeven van de kolommen die u wilt vullen. Voorbeeld:

insert into wp_posts (column_name1, column_name2)
values (1, 3)

Zoek de tabeldefinitie op en kijk welke kolommen je wilt vullen.

En insert betekent dat je een nieuw record invoegt. U wijzigt geen bestaande. Gebruik daarvoor update.


Antwoord 2, autoriteit 37%

  1. je hebt de komma tussen twee waarden of kolomnaam gemist
  2. je plaatst extra waarden of een extra kolomnaam

Antwoord 3, autoriteit 23%

Je moet ook kijken naar nieuwe triggers.

MySQL geeft de tabelnaam niet weer in de foutmelding, dus je wordt echt in de steek gelaten. Hier is een werkend voorbeeld:

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');

Antwoord 4, autoriteit 11%

MySQL rapporteert ook “Kolomtelling komt niet overeen met waardetelling op rij 1” als u meerdere rijen probeert in te voegen zonder de rijsets in de VALUES-sectie met haakjes te scheiden, zoals:

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');

Antwoord 5, autoriteit 11%

U kunt de fout oplossen door de kolomnamen op te geven die u beïnvloedt.

> INSERT INTO table_name (column1,column2,column3)
 `VALUES(50,'Jon Snow','Eye');`

houd er rekening mee dat de puntkomma alleen moet worden toegevoegd na de verklaring die waarden oplevert

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes