Se você estiver recebendo um erro como "ERRO 1136 (21S01):A contagem de colunas não corresponde à contagem de valores na linha ” no MariaDB, provavelmente é porque você especificou o número errado de expressões para o número de colunas na coluna ao tentar inserir dados em uma tabela.
Em outras palavras, você está tentando inserir muitas colunas ou colunas insuficientes.
Para corrigir, ajuste seu
INSERT
instrução para inserir o número correto de valores na tabela. Você também pode nomear as colunas em seu
INSERT
para que o MariaDB saiba em quais colunas cada expressão precisa ser inserida. Exemplo de erro
Suponha que temos a seguinte tabela:
+-------+---------+---------+ | PetId | PetName | PetType | +-------+---------+---------+ | 1 | Fluffy | Cat | | 2 | Tweet | Bird | +-------+---------+---------+
O código a seguir causará o erro:
INSERT INTO Pets VALUES ( 3, 'Wag', 'Dog', 'Brown' );
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 Pets VALUES ( 3, 'Wag' );
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 Pets VALUES ( 3, 'Wag', 'Dog' );
Resultado:
Query OK, 1 row affected (0.010 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 Pets ( PetId, PetName ) VALUES ( 3, 'Wag' );
Resultado:
Query OK, 1 row affected (0.005 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.