Heim >Datenbank >MySQL-Tutorial >Wie behebt man den Fehler „Spaltenanzahl stimmt nicht mit Wertanzahl überein' beim Einfügen von Daten in MySQL aus einem Bash-Skript?
Sie haben ein Bash-Skript erstellt, das darauf abzielt, eine Verbindung zu einem MySQL-Server herzustellen und Daten aus einer Textdatei einzufügen. Bei der Ausführung des Skripts ist jedoch ein Fehler aufgetreten, insbesondere:
ERROR 1136 (21S01) at line 1: Column count doesn't match value count at row 1
Das Problem liegt in der Struktur Ihres Befehls:
echo "INSERT INTO test (IP,MAC,SERVER) VALUES ('cat test.txt');" | mysql -uroot -ptest test;
Dieser Befehl versucht im Wesentlichen, etwas einzufügen den gesamten Inhalt der test.txt-Datei als einzelnen Wert in die Testtabelle. Da Ihre Testtabelle über drei Spalten (IP, MAC, SERVER) verfügt, führt dies zu einer Nichtübereinstimmung zwischen der Anzahl der Werte (1) und der Anzahl der Spalten (3).
Um dieses Problem zu beheben, müssen Sie Folgendes tun Sie müssen Ihr Bash-Skript so ändern, dass jede Zeile der Textdatei als separater Satz von Werten behandelt wird, die in die Datenbank eingefügt werden. Hier ist eine überarbeitete Version Ihres Skripts:
#!/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;
In diesem modifizierten Skript:
Durch Streaming der gelesenen Datei und der Ausführung der Wenn Sie den MySQL-Befehl separat ausführen, können Sie sicherstellen, dass jede Zeile in der Textdatei korrekt als eindeutige Zeile in die Datenbank eingefügt wird.
Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „Spaltenanzahl stimmt nicht mit Wertanzahl überein' beim Einfügen von Daten in MySQL aus einem Bash-Skript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!