Skip to content

📊 数据库脚本

脚本文件

主脚本文件

文件位置: docs/sql/iboot.sql

包含内容:

  • 数据库表结构
  • 初始数据
  • 系统默认配置
  • 用户权限数据

文件说明:

  • 完整的数据库初始化脚本
  • 包含所有必需的表和索引
  • 预置系统必要的基础数据

补丁脚本

文件位置: docs/sql/patch.sql

包含内容:

  • 版本更新的增量脚本
  • 表结构调整
  • 数据修复脚本

使用说明:

  • 如果文件存在且有内容,必须执行
  • 按照文件内的版本顺序执行
  • 建议备份后再执行

获取方式

方式一: 从源码获取

bash
# 克隆后端项目
git clone https://gitee.com/iteaj/iboot.git

# 进入SQL脚本目录
cd iboot/docs/sql

# 查看脚本文件
ls -l

方式二: 直接下载

访问Gitee仓库直接下载:

数据库准备

创建数据库

sql
-- 创建数据库
CREATE DATABASE IF NOT EXISTS iboot 
  DEFAULT CHARACTER SET utf8mb4 
  DEFAULT COLLATE utf8mb4_general_ci;

-- 使用数据库
USE iboot;

配置SQL Mode

重要配置

在导入数据前,必须先配置MySQL的sql_mode,否则可能导致数据导入失败!

临时设置(当前会话)

sql
SET SESSION sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

永久设置(推荐)

Windows系统:

找到MySQL安装目录的 my.ini 文件(如果不存在则创建),添加:

ini
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

Linux系统:

编辑配置文件:

bash
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld] 块下添加:

ini
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

重启MySQL服务:

bash
# Windows
net stop mysql
net start mysql

# Linux (根据系统不同选择)
sudo systemctl restart mysql
# 或
sudo service mysql restart

验证配置:

sql
SELECT @@sql_mode;

导入脚本

使用命令行导入

bash
# 方式一:直接导入
mysql -u root -p iboot < iboot.sql

# 方式二:登录后导入
mysql -u root -p
USE iboot;
SOURCE /path/to/iboot.sql;

# 如果有补丁脚本,继续导入
SOURCE /path/to/patch.sql;

使用MySQL Workbench

  1. 打开MySQL Workbench
  2. 连接到MySQL服务器
  3. 选择 ServerData Import
  4. 选择 Import from Self-Contained File
  5. 选择 iboot.sql 文件
  6. 选择目标数据库 iboot
  7. 点击 Start Import

使用Navicat

  1. 打开Navicat
  2. 连接到MySQL服务器
  3. 创建数据库 iboot
  4. 右键数据库 → 执行SQL文件
  5. 选择 iboot.sql 文件
  6. 点击开始执行
  7. 如有补丁脚本,重复步骤4-6

使用DBeaver

  1. 打开DBeaver
  2. 连接到MySQL服务器
  3. 创建数据库 iboot
  4. 右键数据库 → SQL编辑器执行SQL脚本
  5. 选择 iboot.sql 文件
  6. 点击执行

数据库结构

核心表说明

系统管理

  • sys_user - 用户表
  • sys_role - 角色表
  • sys_menu - 菜单权限表
  • sys_dept - 部门组织表
  • sys_dict - 数据字典表

物联网模块

  • iot_product - 产品表
  • iot_device - 设备表
  • iot_model - 物模型表
  • iot_model_attr - 模型属性表
  • iot_model_event - 模型事件表
  • iot_model_func - 模型功能表

数据采集

  • collect_data - 采集数据表
  • event_source - 事件源表
  • device_group - 设备分组表

协议驱动

  • protocol_driver - 协议驱动表
  • network_component - 网络组件表

初始账号

管理员账号

导入成功后,使用以下账号登录系统:

  • 用户名: admin
  • 密码: admin123 (请首次登录后立即修改)

测试账号

  • 用户名: test
  • 密码: test123

安全提示

生产环境请务必修改默认密码!

数据备份

备份命令

bash
# 备份整个数据库
mysqldump -u root -p iboot > iboot_backup_$(date +%Y%m%d).sql

# 备份指定表
mysqldump -u root -p iboot iot_device iot_product > device_backup.sql

# 备份数据结构(不含数据)
mysqldump -u root -p --no-data iboot > iboot_structure.sql

定期备份建议

生产环境建议:

  • 每天自动备份一次
  • 保留最近7天的备份
  • 重要操作前手动备份

Linux定时备份脚本:

bash
#!/bin/bash
# 保存为 backup_mysql.sh

BACKUP_DIR="/data/backup/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="iboot"

mkdir -p $BACKUP_DIR

mysqldump -u root -p你的密码 $DB_NAME > $BACKUP_DIR/iboot_$DATE.sql

# 删除7天前的备份
find $BACKUP_DIR -name "iboot_*.sql" -mtime +7 -delete

echo "Backup completed: $BACKUP_DIR/iboot_$DATE.sql"

设置定时任务:

bash
# 编辑crontab
crontab -e

# 添加每天凌晨2点执行备份
0 2 * * * /path/to/backup_mysql.sh

常见问题

导入失败

问题: 导入时报错字符集不支持

解决:

sql
-- 修改数据库字符集
ALTER DATABASE iboot CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

表已存在

问题: 提示表已存在

解决:

sql
-- 删除已有数据库(谨慎操作)
DROP DATABASE IF EXISTS iboot;

-- 重新创建
CREATE DATABASE iboot DEFAULT CHARACTER SET utf8mb4;

sql_mode错误

问题: 导入时出现日期或除零错误

解决: 按照上面的 配置SQL Mode 章节配置

权限不足

问题: 没有权限创建数据库或表

解决:

sql
-- 授予权限
GRANT ALL PRIVILEGES ON iboot.* TO 'your_user'@'localhost';
FLUSH PRIVILEGES;

版本升级

升级流程

  1. 备份现有数据库
bash
mysqldump -u root -p iboot > iboot_backup_before_upgrade.sql
  1. 下载新版本补丁脚本
bash
git pull origin main
  1. 执行补丁脚本
bash
mysql -u root -p iboot < docs/sql/patch.sql
  1. 验证升级结果
    • 检查系统是否正常启动
    • 验证核心功能
    • 检查数据完整性

版本回滚

如果升级失败,可以回滚到备份:

bash
# 删除当前数据库
mysql -u root -p -e "DROP DATABASE iboot;"

# 恢复备份
mysql -u root -p -e "CREATE DATABASE iboot;"
mysql -u root -p iboot < iboot_backup_before_upgrade.sql

技术支持

遇到数据库相关问题:

  1. 查看 快速开始 中的数据库配置
  2. 在Gitee提交Issue
  3. 检查MySQL错误日志

提示

建议在测试环境先验证脚本,确认无误后再应用到生产环境。