Skip to content

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.sql

SQLite 示例(文件库,无需建库):

sh
sqlite3 easygoadmin.db < document/sqlite/easygoadmin.goframe.elevue.sql

SQL 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;

小蚂蚁云团队 · 提供技术支持