mysqldump使用mysqldump将CREATE放在第一行

时间:2014-01-14 13:54:06

标签: database bash mysqldump

这是我的完整bash脚本:

#!/bin/bash

logs="$HOME/sitedb_backups/log"

mysql_user="user"
mysql_password="pass"

mysql=/usr/bin/mysql
mysqldump=/usr/bin/mysqldump

tbackups="$HOME/sitedb_backups/today"
ybackups="$HOME/sitedb_backups/yesterday"

echo "`date`" > $logs/backups.log

rm $ybackups/* >> $logs/backups.log
mv $tbackups/* $ybackups/ >> $logs/backups.log

databases=`$mysql --user=$mysql_user -p$mysql_password -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema)"`

for db in $databases ; do
  $mysqldump --force --opt --user=$mysql_user -p$mysql_password --databases $db | gzip > "$tbackups/$db.gz"
  echo -e "\r\nBackup of $db successfull" >> $logs/backups.log
done

mail -s "Your DB backups is ready!" yourmail@gmail.com <<< "Today: "`date`"
DB backups of every site is ready."

exit 0

问题是当我尝试使用mysql导入它时,我将gettint错误1044错误连接到oldname_db。当我打开sql文件时,我注意到第一行CREATE命令,因此它尝试使用旧名称创建该数据库。我该如何解决这个问题呢?

解决。

在我的情况下使用--databases参数是没有必要的,因为--databases它在sql文件的开头生成了CREATE和USE操作,希望它能帮助其他人。

1 个答案:

答案 0 :(得分:1)

使用--no-create-db的{​​{1}}选项。

来自mysqldump

  

- no-create-db,-n

     

此选项禁止使用CREATE DATABASE语句   如果是--databases或--all-databases,则包含在输出中   选项已经给出。