Salah satu pesan kesalahan yang lebih umum di MySQL berbunyi seperti ini:“ERROR 1136 (21S01):Jumlah kolom tidak cocok dengan jumlah nilai pada baris 1 “.
Kesalahan ini biasanya terjadi saat Anda mencoba menyisipkan data ke dalam tabel, tetapi jumlah kolom yang Anda coba sisipkan tidak cocok dengan jumlah kolom dalam tabel.
Dengan kata lain, Anda mencoba memasukkan terlalu banyak kolom, atau tidak cukup kolom.
Untuk memperbaiki masalah ini, pastikan Anda memasukkan jumlah kolom yang benar ke dalam tabel.
Atau, Anda dapat memberi nama kolom di INSERT
pernyataan sehingga MySQL mengetahui kolom mana yang perlu dimasukkan data Anda.
Kesalahan juga dapat terjadi jika Anda memasukkan jumlah kolom yang salah ke ROW()
klausa saat menggunakan VALUES
pernyataan.
Contoh Kesalahan
Misalkan kita memiliki tabel berikut:
+----------+----------+----------+ | column_0 | column_1 | column_2 | +----------+----------+----------+ | 1 | 2 | 3 | | 4 | 5 | 6 | +----------+----------+----------+
Kode berikut akan menyebabkan kesalahan:
INSERT INTO t1 VALUES (7, 8, 9, 10);
Hasil:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
Dalam hal ini, saya mencoba memasukkan data untuk empat kolom ke dalam tabel yang hanya memiliki tiga kolom.
Kami akan mendapatkan kesalahan yang sama jika kami mencoba memasukkan terlalu sedikit kolom:
INSERT INTO t1 VALUES (7, 8);
Hasil:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
Solusi 1
Solusi yang jelas adalah dengan memasukkan jumlah baris yang benar. Oleh karena itu, kita dapat menulis ulang kode kita sebagai berikut:
INSERT INTO t1 VALUES (7, 8, 9);
Hasil:
Query OK, 1 row affected (0.00 sec)
Solusi 2
Cara lain untuk melakukannya adalah dengan secara eksplisit menamai kolom yang ingin kita masukkan datanya. Teknik ini dapat digunakan untuk menyisipkan lebih sedikit kolom daripada yang ada di tabel.
Contoh:
INSERT INTO t1 (column_0, column_1) VALUES (7, 8);
Hasil:
Query OK, 1 row affected (0.00 sec)
Metode ini dapat menghasilkan kesalahan yang berbeda jika ada kendala yang memerlukan nilai yang akan diteruskan untuk kolom tersebut (misalnya, jika tabel memiliki NOT NULL
kendala pada kolom itu). Oleh karena itu, Anda harus memastikan bahwa Anda mematuhi batasan apa pun pada kolom saat melakukan ini.