Uma das mensagens de erro mais comuns no MySQL é assim:“ERROR 1136 (21S01):Column count not match value count at row 1 “.
Esse erro geralmente ocorre quando você está tentando inserir dados em uma tabela, mas o número de colunas que você está tentando inserir não corresponde ao número de colunas na tabela.
Em outras palavras, você está tentando inserir muitas colunas ou colunas insuficientes.
Para corrigir esse problema, verifique se você está inserindo o número correto de colunas na tabela.
Alternativamente, você pode nomear as colunas em seu
INSERT
para que o MySQL saiba em quais colunas seus dados precisam ser inseridos. O erro também pode ocorrer se você passar o número errado de colunas para um
ROW()
cláusula ao usar o VALUES
demonstração. Exemplo de erro
Suponha que temos a seguinte tabela:
+----------+----------+----------+ | column_0 | column_1 | column_2 | +----------+----------+----------+ | 1 | 2 | 3 | | 4 | 5 | 6 | +----------+----------+----------+
O código a seguir causará o erro:
INSERT INTO t1 VALUES (7, 8, 9, 10);
Resultado:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
Nesse caso, tentei inserir dados de quatro colunas em uma tabela que possui apenas três colunas.
Receberemos o mesmo erro se tentarmos inserir poucas colunas:
INSERT INTO t1 VALUES (7, 8);
Resultado:
ERROR 1136 (21S01): Column count doesn't match value count at row 1
Solução 1
A solução óbvia é inserir o número correto de linhas. Portanto, poderíamos reescrever nosso código da seguinte forma:
INSERT INTO t1 VALUES (7, 8, 9);
Resultado:
Query OK, 1 row affected (0.00 sec)
Solução 2
Outra maneira de fazer isso é nomear explicitamente as colunas para as quais desejamos inserir dados. Essa técnica pode ser usada para inserir menos colunas do que na tabela.
Exemplo:
INSERT INTO t1 (column_0, column_1) VALUES (7, 8);
Resultado:
Query OK, 1 row affected (0.00 sec)
Este método pode resultar em um erro diferente se houver alguma restrição que exija que um valor seja passado para essa coluna (por exemplo, se a tabela tiver um
NOT NULL
restrição nessa coluna). Portanto, você precisará garantir que está cumprindo todas as restrições na coluna ao fazer isso.