我有两个数据库。 站点使用第一个数据库。 第二个用于测试站点的调试。
每天几次我必须更新测试站点数据库。
我没有root权限来删除和创建调试数据库。 所以我必须放弃所有的表而忽略外键;从firts数据库备份和恢复表到第二个。
所有表都是带外键的InnoDB。
答案 0 :(得分:0)
#!/bin/bash
USERNAME=root
PASSWORD=xxx
DBFROM=xxx
DBTO=xxx
HOST=localhost
MYSQL_OPTS="-u $USERNAME -p$PASSWORD -h $HOST"
TABLES=$(mysql $MYSQL_OPTS -BNe "show tables" $DBTO | tr '\n' ',' | sed -e 's/,$//' | awk '{print "SET FOREIGN_KEY_CHECKS = 0;DROP TABLE IF EXISTS " $1 ";SET FOREIGN_KEY_CHECKS = 1;"}')
mysql $MYSQL_OPTS -BNe "$TABLES" $DBTO
mysqldump $MYSQL_OPTS $DBFROM | mysql $MYSQL_OPTS $DBTO