2013-08-21 13 views
25

Così ho letto gli altri post ma questa domanda è unica. Quindi questo file di dump SQL ha questa come ultima voce.Il conteggio delle colonne non corrisponde al conteggio dei valori alla riga 1

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

Sto cercando di inserire questo valore nella tabella ...

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

mi dà l'errore "Il numero delle colonne non corrisponde al conteggio alla riga 1." Quindi sono perso sul concetto di come la colonna e la riga si applicano qui.

Non corrisponde a 2781,3 riga 2781 e colonna 3? E non significa 5,5 significa riga 5 e colonna 5?

risposta

29

L'errore indica che non si forniscono tanti dati quanti la tabella wp_posts contiene colonne. E ora il motore DB non sa in quali colonne inserire i tuoi dati.

Per superare questo è necessario fornire i nomi delle colonne che si desidera riempire. Esempio:

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

Cercare la definizione della tabella e vedere quali colonne si desidera riempire.

E insert significa che si è inserendo un nuovo record. Non stai modificando uno esistente. Utilizzare update per quello.

9
  1. vi siete persi la virgola tra due valori o nome di colonna
  2. si mettono i valori extra o un nome di colonna in più
3

Si dovrebbe anche cercare nuovi trigger.

MySQL non mostra il nome della tabella nell'errore, quindi sei davvero lasciato a bocca aperta. Ecco un esempio di lavoro:

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

MySQL sarà inoltre segnalare "Il numero delle colonne non corrisponde al conteggio alla riga 1" se si tenta di inserire più righe senza che delimita i set di righe nella sezione valori con parentesi, in questo modo :

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