Mysql bash 数据库存在时数据库名称错误?
P粉818125805
P粉818125805 2024-01-29 12:27:49
0
1
457

我目前正在使用 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

P粉818125805
P粉818125805

全部回复(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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板