我目前正在使用 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 Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
您的数组为空。您必须将 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