Om du stöter på ett fel som lyder "INSERT har fler uttryck än målkolumner ” när du försöker infoga data i Postgres beror det på att du försöker infoga data i fler kolumner än vad tabellen faktiskt innehåller.
Du kanske till exempel försöker infoga fyra uttryck i en tabell som bara innehåller tre kolumner.
För att fixa, ta bort det/de extra uttrycket från din INSERT
påstående. Med andra ord, se till att du infogar rätt antal kolumner.
Exempel på fel
Anta att vi har en sådan tabell:
+-------+---------+---------+ | petid | petname | pettype | +-------+---------+---------+ | 1 | Fluffy | Cat | | 2 | Tweet | Bird | +-------+---------+---------+
Den tabellen har tre kolumner.
Anta nu att vi vill infoga ytterligare en rad.
Så här genererar du felet:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );
Resultat:
ERROR: INSERT has more expressions than target columns LINE 1: INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' ); ^
Här försökte jag infoga fyra uttryck i en tabell som bara har tre kolumner.
Lösning
Lösningen är enkel. Ta bort det extra uttrycket:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog' );
Här tog jag bort det sista uttrycket (Brown
) från VALUES
lista. Detta resulterade i att raden infogades utan fel.
Eller, för att vara säker på att du inte av misstag infogar data i fel kolumn, kan du uttryckligen ange varje kolumn:
INSERT INTO Pets ( PetId, PetName, PetType )
VALUES ( 1, 'Wag', 'Dog' );
Efter att ha kört ett av ovanstående satser ser tabellen nu ut så här:
SELECT * FROM Pets;
Resultat:
+-------+---------+---------+ | petid | petname | pettype | +-------+---------+---------+ | 1 | Fluffy | Cat | | 2 | Tweet | Bird | | 3 | Wag | Dog | +-------+---------+---------+
Vi har infogat raden i tabellen.