「ERROR1136(21S01):列数が行の値数と一致しません」のようなエラーが発生した場合 」MariaDBで、データをテーブルに挿入しようとしたときに、列の列数に間違った数の式を指定したことが原因である可能性があります。
つまり、挿入しようとしている列が多すぎるか、列が足りません。
修正するには、INSERT
を調整します 正しい数の値をテーブルに挿入するステートメント。
INSERT
の列に名前を付けることもできます MariaDBが、各式を挿入する必要のある列を認識できるようにするためのステートメント。
次の表があるとします。
+-------+---------+---------+ | PetId | PetName | PetType | +-------+---------+---------+ | 1 | Fluffy | Cat | | 2 | Tweet | Bird | +-------+---------+---------+
次のコードはエラーの原因になります:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );
結果:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
この場合、3列しかないテーブルに4列のデータを挿入しようとしました。
挿入する列が少なすぎる場合も同じエラーが発生します:
INSERT INTO Pets VALUES ( 3, 'Wag' );
結果:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
明らかな解決策は、正しい数の行を挿入することです。したがって、次のようにコードを書き直すことができます。
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog' );
結果:
Query OK, 1 row affected (0.010 sec)
これを行う別の方法は、データを挿入する列に明示的に名前を付けることです。この手法を使用すると、テーブルよりも少ない列を挿入できます。
例:
INSERT INTO Pets ( PetId, PetName ) VALUES ( 3, 'Wag' );
結果:
Query OK, 1 row affected (0.005 sec)
このメソッドでは、その列に値を渡す必要がある制約がある場合(たとえば、テーブルにNOT NULL
がある場合)、別のエラーが発生する可能性があります。 その列の制約)。したがって、これを行うときは、列の制約に準拠していることを確認する必要があります。