suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Der Name der MySQL-Bash-Datenbank ist falsch, wenn eine Datenbank vorhanden ist?

Ich skripte derzeit die Migration mithilfe von Bash-Skripten. Wenn ich versuche, die Datenbank über eine Variable in einem Bash-Skript zu öffnen, ist der Datenbankname falsch. Ich erhalte die folgende Fehlermeldung „‚RROR 1102 (42000): Falscher Datenbankname ‚Entwicklung‘“

mysql --batch --host=********** --user=**** --password=***** $dbName -e "${fileContents}"

Wenn ich das in einem Bash-Skript mache, ist die Datenbank vorhanden

mysql --batch --host=********** --user=**** --password=***** development -e "${fileContents}"

Die Variable fileContents ist das Migrationsskript in SQL. Die Variable dbName ist der Name der Datenbank.

Ich erhalte den Datenbanknamen aus einer Tabelle in der Datenbank mit den folgenden Zeilen

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

Die Namen im Datenbank-Array scheinen korrekt zu sein, aber ich denke, dass das Array die Dinge durcheinander bringt. Ich durchlaufe das wahre Array wie folgt.

for dbName in "${databaseNames[@]}" do

P粉818125805P粉818125805329 Tage vor459

Antworte allen(1)Ich werde antworten

  • P粉714844743

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

    您的数组为空。您必须将 while 循环更改为

    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;')

    然后

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

    Antwort
    0
  • StornierenAntwort