Carl 8ed771f24b Feature #TASK_QT-34190 init преди 2 дни
..
README.md 4e6532c09a Feature init license admin преди 2 седмици
database.go 4e6532c09a Feature init license admin преди 2 седмици
init.sql 8ed771f24b Feature #TASK_QT-34190 init преди 2 дни
schema.sql 4e6532c09a Feature init license admin преди 2 седмици

README.md

数据库配置说明

MySQL 数据库配置

本项目使用 MySQL 作为数据库。以下是配置说明。

环境变量

变量名 说明 默认值
DB_HOST MySQL 主机地址 localhost
DB_PORT MySQL 端口 3306
DB_USER MySQL 用户名 root
DB_PASSWORD MySQL 密码 password
DB_NAME 数据库名称 license_admin

SQL 文件说明

init.sql

完整的数据库初始化脚本,包括:

  • 创建数据库(如果不存在)
  • 创建表结构
  • 插入测试数据

使用方法:

mysql -u root -p < database/init.sql

schema.sql

仅包含表结构定义,不包含数据和数据库创建语句。

使用方法:

mysql -u root -p license_admin < database/schema.sql

手动创建数据库

1. 登录 MySQL

mysql -u root -p

2. 创建数据库

CREATE DATABASE IF NOT EXISTS `license_admin` 
  DEFAULT CHARACTER SET utf8mb4 
  DEFAULT COLLATE utf8mb4_unicode_ci;

3. 使用数据库

USE `license_admin`;

4. 导入表结构

mysql -u root -p license_admin < database/schema.sql

或者使用 init.sql(会自动创建数据库):

mysql -u root -p < database/init.sql

Docker 环境

使用 Docker Compose 时,MySQL 会自动初始化:

docker-compose up -d

数据库会自动创建并初始化。

表结构

licenses 表

字段名 类型 说明
id bigint unsigned 主键,自增
key varchar(255) 激活码,唯一索引
bound_devices text 已绑定设备列表(JSON 数组)
device_activations text 设备激活时间(JSON 对象)
max_devices int 最大设备数,默认 2
created_at datetime(3) 创建时间
updated_at datetime(3) 更新时间

数据备份

备份数据库

mysqldump -u root -p license_admin > backup_$(date +%Y%m%d).sql

恢复数据库

mysql -u root -p license_admin < backup_20240113.sql

连接测试

mysql -h localhost -P 3306 -u root -p license_admin

注意事项

  1. 字符集:数据库使用 utf8mb4 字符集,支持完整的 UTF-8 字符(包括 emoji)
  2. 时区:连接字符串中设置了 parseTime=True&loc=Local,确保时间正确解析
  3. 连接池:应用会自动配置连接池,最大空闲连接 10,最大打开连接 100
  4. 表结构管理:表结构需要手动创建和维护,应用不会自动迁移表结构