Maison >base de données >tutoriel mysql >Comment corriger l'erreur « Le nombre de colonnes ne correspond pas au nombre de valeurs » lors de l'insertion de données dans MySQL à partir d'un script Bash ?
Vous avez créé un script Bash qui vise à se connecter à un serveur MySQL et à insérer des données à partir d'un fichier texte. Cependant, vous avez rencontré une erreur dans l'exécution du script, notamment :
ERROR 1136 (21S01) at line 1: Column count doesn't match value count at row 1
Le problème réside dans la structure de votre commande :
echo "INSERT INTO test (IP,MAC,SERVER) VALUES ('cat test.txt');" | mysql -uroot -ptest test;
Cette commande tente essentiellement d'insérer l'intégralité du contenu du fichier test.txt sous forme de valeur unique dans la table de test. Puisque votre table de test comporte trois colonnes (IP, MAC, SERVEUR), cela entraîne une inadéquation entre le nombre de valeurs (1) et le nombre de colonnes (3).
Pour résoudre ce problème, vous allez Vous devez modifier votre script Bash pour traiter chaque ligne du fichier texte comme un ensemble distinct de valeurs à insérer dans la base de données. Voici une version révisée de votre script :
#!/bin/bash inputfile="test.txt" cat $inputfile | while read ip mac server; do echo "INSERT INTO test (IP,MAC,SERVER) VALUES ('$ip', '$mac', '$server');" done | mysql -uroot -ptest test;
Dans ce script modifié :
En streaming le fichier lu et l'exécution du MySQL commande séparément, vous pouvez vous assurer que chaque ligne du fichier texte est correctement insérée en tant que ligne distincte dans la base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!