cari

Rumah  >  Soal Jawab  >  teks badan

Nama pangkalan data bash Mysql salah apabila pangkalan data wujud?

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粉818125805P粉818125805298 hari yang lalu425

membalas semua(1)saya akan balas

  • P粉714844743

    P粉7148447432024-01-30 10:57:21

    Tatasusunan anda kosong. Anda perlu menukar gelung while kepada

    while read dbName guid; do
          databaseNames+=($dbName)
    done < <(mysql --batch --raw  --host=$host --port=$port --user=$user --password=$password  --database="yourdatabase" -e 'SELECT database_name FROM users.organisations;')

    Kemudian

    for dbName in "${databaseNames[@]}"
    do
      echo $dbName
      mysql --batch --raw  --host=$host --port=$port --user=$user --password=$password  --database="$dbName" -e '${fileContents};')
    done

    balas
    0
  • Batalbalas