Nama pangkalan data bash Mysql salah apabila pangkalan data wujud?
P粉818125805
P粉818125805 2024-01-29 12:27:49
0
1
428

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

P粉818125805
P粉818125805

membalas semua(1)
P粉714844743

Tatasusunan anda kosong. Anda perlu menukar gelung while kepada

while read dbName guid; do
      databaseNames+=($dbName)
done 

Kemudian

for dbName in "${databaseNames[@]}"
do
  echo $dbName
  mysql --batch --raw  --host=$host --port=$port --user=$user --password=$password  --database="$dbName" -e '${fileContents};')
done
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan