我目前正在使用 bash 脚本编写迁移脚本。 当我尝试通过 bash 脚本中的变量打开数据库时,数据库名称不正确。 我收到以下错误 “‘RROR 1102 (42000):数据库名称‘development’不正确”
mysql --batch --host=********** --user=**** --password=***** $dbName -e "${fileContents}"
当我在 bash 脚本中执行此操作时,数据库存在
mysql --batch --host=********** --user=**** --password=***** development -e "${fileContents}"
变量fileContents是SQL中的迁移脚本。 变量 dbName 是数据库的名称。
我通过以下几行从数据库中的表中获取数据库名称
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
数据库数组中的名称似乎是正确的,但我认为该数组把事情弄乱了。 我按如下方式循环 true 数组。
for dbName in "${databaseNames[@]}" do
您的数组为空。您必须将 while 循环更改为