「INSERTにはターゲット列よりも多くの式があります」というエラーが発生した場合 」Postgresにデータを挿入しようとすると、テーブルに実際に含まれているよりも多くの列にデータを挿入しようとしているためです。
たとえば、3つの列だけを含むテーブルに4つの式を挿入しようとしている可能性があります。
修正するには、INSERT
から余分な式を削除します 声明。つまり、正しい数の列を挿入していることを確認してください。
次のようなテーブルがあるとします。
+-------+---------+---------+ | petid | petname | pettype | +-------+---------+---------+ | 1 | Fluffy | Cat | | 2 | Tweet | Bird | +-------+---------+---------+
そのテーブルには3つの列があります。
ここで、別の行を挿入するとします。
エラーを生成する方法は次のとおりです。
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );
結果:
ERROR: INSERT has more expressions than target columns LINE 1: INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' ); ^
ここでは、3列しかないテーブルに4つの式を挿入しようとしました。
解決策は簡単です。余分な式を削除します:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog' );
ここでは、最後の式(Brown
)を削除しました )VALUES
から リスト。これにより、行がエラーなしで挿入されました。
または、誤って間違った列にデータを挿入しないようにするために、各列を明示的に指定できます。
INSERT INTO Pets ( PetId, PetName, PetType )
VALUES ( 1, 'Wag', 'Dog' );
上記のステートメントのいずれかを実行すると、テーブルは次のようになります。
SELECT * FROM Pets;
結果:
+-------+---------+---------+ | petid | petname | pettype | +-------+---------+---------+ | 1 | Fluffy | Cat | | 2 | Tweet | Bird | | 3 | Wag | Dog | +-------+---------+---------+
行をテーブルに正常に挿入しました。