Le nom de la base de données Mysql bash est erroné lorsque la base de données existe ?
P粉818125805
P粉818125805 2024-01-29 12:27:49
0
1
455

Je suis actuellement en train de créer un script pour la migration à l'aide de scripts bash. Lorsque j'essaie d'ouvrir la base de données via une variable dans un script bash, le nom de la base de données est incorrect. J'obtiens l'erreur suivante "'RROR 1102 (42000) : Nom de base de données incorrect 'développement'"

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

Quand je fais cela dans un script bash, la base de données existe

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

La variable fileContents est le script de migration en SQL. La variable dbName est le nom de la base de données.

J'obtiens le nom de la base de données à partir d'une table de la base de données avec les lignes suivantes

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

Les noms dans le tableau de la base de données semblent corrects, mais je pense que le tableau gâche les choses. Je parcours le vrai tableau comme suit.

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

P粉818125805
P粉818125805

répondre à tous(1)
P粉714844743

Votre tableau est vide. Vous devez changer la boucle while en

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

Alors

for dbName in "${databaseNames[@]}"
do
  echo $dbName
  mysql --batch --raw  --host=$host --port=$port --user=$user --password=$password  --database="$dbName" -e '${fileContents};')
done
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal