Penyelesaian Skrip Bash untuk Memasukkan Nilai ke dalam MySQL
Apabila cuba memasukkan nilai ke dalam MySQL menggunakan skrip bash, pengguna mungkin menghadapi ralat yang menunjukkan ketidakpadanan antara kiraan lajur dan kiraan nilai. Ralat ini biasanya timbul apabila format data input tidak sejajar dengan lajur yang dijangkakan dalam jadual pangkalan data. Pertimbangkan contoh berikut:
Skrip di bawah bertujuan untuk memasukkan nilai daripada fail teks ke dalam jadual MySQL bernama 'test':
#!/bin/bash echo "INSERT INTO test (IP,MAC,SERVER) VALUES ('cat test.txt');" | mysql -uroot -ptest test;
Walau bagaimanapun, selepas pelaksanaan, skrip mengembalikan ralat :
ERROR 1136 (21S01) at line 1: Column count doesn't match value count at row 1
Untuk menyelesaikan isu ini, sahkan format data dalam fail teks 'test.txt'. Jika data tidak diformat dengan betul, ia akan membawa kepada percanggahan antara bilangan lajur yang dijangkakan dalam jadual MySQL dan nilai yang dimasukkan.
Berikut ialah skrip yang disemak yang mengambil pendekatan berbeza:
#!/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;
Skrip ini berulang pada setiap baris dalam fail teks dan mengekstrak nilai untuk setiap lajur (IP, MAC, SERVER). Ia kemudian membina pernyataan SQL untuk setiap baris dan menyalurkannya ke arahan MySQL, memastikan kiraan lajur dan kiraan nilai sepadan.
Dengan mengubah suai skrip dan memformat data input dengan betul dalam fail teks, anda boleh berjaya memasukkan nilai ke dalam jadual MySQL menggunakan skrip bash.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Kiraan lajur tidak sepadan dengan kiraan nilai' Semasa Memasukkan Data ke dalam MySQL dengan Bash?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!