#!/bin/bash # 设置错误时退出 set -e # 设置颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo -e "${GREEN}开始执行数据库迁移...${NC}" # 加载环境变量 if [ -f ".env" ]; then export $(cat .env | grep -v '^#' | xargs) fi # 检查数据库连接 echo -e "${YELLOW}检查数据库连接...${NC}" mysql -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASSWORD} -e "SELECT 1" >/dev/null 2>&1 if [ $? -eq 0 ]; then echo -e "${GREEN}数据库连接成功${NC}" else echo -e "${RED}数据库连接失败,请检查配置${NC}" exit 1 fi # 执行迁移文件 MIGRATION_DIR="migrations" if [ -d "$MIGRATION_DIR" ]; then echo -e "${YELLOW}执行迁移文件...${NC}" for file in $(ls $MIGRATION_DIR/*.sql 2>/dev/null | sort); do filename=$(basename "$file") echo -e "${GREEN}执行: $filename${NC}" mysql -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASSWORD} ${DB_NAME} < "$file" if [ $? -eq 0 ]; then echo -e "${GREEN} ✓ 成功${NC}" else echo -e "${RED} ✗ 失败${NC}" exit 1 fi done echo -e "${GREEN}数据库迁移完成!${NC}" else echo -e "${YELLOW}没有找到迁移目录${NC}" exit 1 fi