Der Name der MySQL-Bash-Datenbank ist falsch, wenn eine Datenbank vorhanden ist?
P粉818125805
P粉818125805 2024-01-29 12:27:49
0
1
421

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粉818125805
P粉818125805

Antworte allen(1)
P粉714844743

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

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

然后

for dbName in "${databaseNames[@]}"
do
  echo $dbName
  mysql --batch --raw  --host=$host --port=$port --user=$user --password=$password  --database="$dbName" -e '${fileContents};')
done
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage