HRMS 项目现在支持基于 GORM 的数据库迁移功能,可以自动创建和更新数据库表结构。
- ✅ 自动迁移所有模型
- ✅ 支持多数据库(分公司数据库)
- ✅ 支持环境配置(dev/test/prod/self)
- ✅ 支持重置数据库
- ✅ 支持指定数据库迁移
- ✅ 命令行界面
./build.sh build-migrate./build.sh migrate
# 或
./build/migrate./build.sh migrate-db hrms_C001
# 或
./build/migrate -db hrms_C001./build.sh migrate-reset
# 或
./build/migrate -reset./build.sh migrate-reset-db hrms_C001
# 或
./build/migrate -reset -db hrms_C001通过环境变量 HRMS_ENV 指定运行环境:
# 开发环境(默认)
HRMS_ENV=dev ./build.sh migrate
# 测试环境
HRMS_ENV=test ./build.sh migrate
# 生产环境
HRMS_ENV=prod ./build.sh migrate
# 自定义环境
HRMS_ENV=self ./build.sh migrate迁移工具会自动迁移以下模型:
Authority- 权限表Department- 部门表Rank- 职级表Staff- 员工表AttendanceRecord- 考勤记录表Notification- 通知表BranchCompany- 分公司表Salary- 薪资表SalaryRecord- 薪资记录表Recruitment- 招聘信息表Candidate- 候选人表Example- 考试表ExampleScore- 考试成绩表
迁移工具使用项目的配置文件:
- 开发环境:
config/config-dev.yaml - 测试环境:
config/config-test.yaml - 生产环境:
config/config-prod.yaml - 自定义环境:
config/config-self.yaml
配置示例:
db:
user: root
password: 123
host: 127.0.0.1
port: 3306
dbName: hrms_C001,hrms_C002- 数据库连接:确保 MySQL 数据库已启动并可连接
- 权限要求:数据库用户需要有创建、修改表的权限
- 备份数据:生产环境执行迁移前请备份数据
- 外键约束:重置数据库时会按相反顺序删除表,避免外键约束问题
连接数据库失败: dial tcp 127.0.0.1:3306: connect: connection refused
解决:检查 MySQL 是否启动,配置是否正确
迁移模型失败: ERROR 1142 (42000): CREATE command denied to user
解决:确保数据库用户有创建表的权限
迁移模型失败: Table 'staff' already exists
解决:GORM 会自动处理已存在的表,通常不会影响迁移
如需添加新的模型,请:
- 在
model/目录下创建新的模型文件 - 在
cmd/migrate/main.go的getModels()函数中添加新模型 - 重新构建迁移工具:
./build.sh build-migrate
查看所有可用的构建命令:
./build.sh help