Saya sedang menskrip migrasi menggunakan skrip bash. Apabila saya cuba membuka pangkalan data melalui pembolehubah dalam skrip bash, nama pangkalan data tidak betul. Saya mendapat ralat berikut "'RROR 1102 (42000): Nama pangkalan data 'pembangunan' salah"
mysql --batch --host=********** --user=**** --password=***** $dbName -e "${fileContents}"
Apabila saya melakukan ini dalam skrip bash, pangkalan data wujud
mysql --batch --host=********** --user=**** --password=***** development -e "${fileContents}"
Kandungan fail berubah ialah skrip pemindahan dalam SQL. Pembolehubah dbName ialah nama pangkalan data.
Saya mendapat nama pangkalan data daripada jadual dalam pangkalan data dengan baris berikut
databaseNames=() shopt -s lastpipe mysql --batch --raw --host=***** --user=**** --password=***** -e 'SELECT database_name FROM users.organisations' | while read dbName guid; do if [ $i -gt 0 ] then databaseNames+=($dbName) fi i=$(($i + 1)) done
Nama dalam tatasusunan pangkalan data nampaknya betul, tetapi saya rasa tatasusunan itu mengacaukan keadaan. Saya mengulangi tatasusunan sebenar seperti berikut.
for dbName in "${databaseNames[@]}" do
Tatasusunan anda kosong. Anda perlu menukar gelung while kepada