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
Votre tableau est vide. Vous devez changer la boucle while en