2.4 数据库初始化
概述
项目以 MySQL 为规范基准数据库,五方言定稿脚本统一存放于 document/{数据库}/easygoadmin.goframe.elevue.sql。本节演示最短初始化路径与验证方法。
定稿脚本目录
text
document/
├── mysql/easygoadmin.goframe.elevue.sql # MySQL 定稿(规范基准,人工导入维护)
├── postgresql/easygoadmin.goframe.elevue.sql # PostgreSQL 定稿(由基准转换,待人工校对)
├── sqlserver/easygoadmin.goframe.elevue.sql # SQL Server 定稿(由基准转换,待人工校对)
├── oracle/easygoadmin.goframe.elevue.sql # Oracle 定稿(由基准转换,待人工校对)
└── sqlite/easygoadmin.goframe.elevue.sql # SQLite 定稿(由基准转换,待人工校对)定稿以 MySQL 为准
五份脚本中 MySQL 版为规范基准,后四份由基准转换生成,尚待人工校对。生产使用非 MySQL 库前,请人工核对后四份脚本(尤其是唯一索引 uk_* 与列注释枚举)。
方式一:导入 MySQL 定稿脚本(推荐)
sh
# 创建库(注意库名含点,utf8mb4)
mysql -uroot -p -e "CREATE DATABASE \`easygoadmin.goframe.elevue\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
# 导入定稿脚本(含 25 张表 + 索引 + 种子数据:超管账号/菜单/字典/参数/租户等)
mysql -uroot -p easygoadmin.goframe.elevue < document/mysql/easygoadmin.goframe.elevue.sql导入后验证:
sql
SHOW TABLES; -- 25 张 goframe_ 前缀表
SELECT username FROM goframe_user WHERE id=1; -- admin其他数据库初始化
PostgreSQL 示例:
sh
createdb -U postgres easygoadmin.goframe.elevue
psql -U postgres -d easygoadmin.goframe.elevue -f document/postgresql/easygoadmin.goframe.elevue.sqlSQLite 示例(文件库,无需建库):
sh
sqlite3 easygoadmin.db < document/sqlite/easygoadmin.goframe.elevue.sqlSQL Server / Oracle 使用对应客户端工具执行 document/sqlserver/、document/oracle/ 下脚本。
导入后修改 manifest/config/config.yaml 的 database.default.type/link 切换连接(五驱动已在 main.go 预注册,改配置即切换)。
从现有库迁移
已有 MySQL 数据要搬到其他方言,不要手工导 SQL,使用内置整库迁移器(结构 + 注释 + 索引 + 数据 + 序列一体搬运,五方言互迁):
sh
go run ./cmd/migrator \
-src-type=mysql -src-host=127.0.0.1 -src-hostport=3306 \
-src-database=easygoadmin.goframe.elevue -src-username=root -src-password=root \
-dst-type=pgsql -dst-host=127.0.0.1 -dst-hostport=5432 \
-dst-database=easygoadmin.goframe.elevue -dst-username=postgres -dst-password=123456 \
-drop-target-first详见 7.6 数据库迁移工具 与 11.3 数据库迁移。仓库保留有实测日志:document/数据迁移PostgreSQL版本日志.txt、数据迁移SqlServer版本日志.txt、数据迁移Sqlite版本日志.txt。
表结构通用规范
全部 25 张表统一以下规范(建新表必须遵循,详见 3.2 数据库建表):
sql
-- 统一审计列(25 表齐备)
id int NOT NULL AUTO_INCREMENT, -- 主键:数据库自增(禁用雪花)
create_user varchar(50), -- 创建人
create_time datetime DEFAULT (now()), -- 创建时间
update_user varchar(50), -- 更新人
update_time datetime DEFAULT (now()), -- 更新时间
del_flag int DEFAULT 0, -- 软删:0-正常 1-已删除
-- 租户级表(9 张)另有:
tenant_id int DEFAULT 0 -- 0=平台级验证数据完整性
sql
-- 种子超管与角色
SELECT u.username, r.code FROM goframe_user u
JOIN goframe_user_role ur ON ur.user_id=u.id
JOIN goframe_role r ON r.id=ur.role_id; -- admin / ROLE_SUPER_ADMIN
-- 字典种子
SELECT code FROM goframe_dict; -- role_data_scope 等
-- 唯一索引检查(13 个)
SELECT TABLE_NAME, INDEX_NAME FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA='easygoadmin.goframe.elevue' AND INDEX_NAME LIKE 'uk_%'
GROUP BY TABLE_NAME, INDEX_NAME;