Skip to main content

MySQL数据库初始化

作者:程序员马丁

在线博客:https://nageoffer.com

note

Ragent AI —— 从 0 到 1 纯手工打造企业级 Agentic RAG,拒绝 Demo 玩具!AI 时代,助你拿个offer。

完成 MySQL 的安装与配置后,接下来需要对数据库进行初始化,包括创建数据库、导入表结构以及初始化基础数据。这一步骤是 Ragent AI 项目正常运行的前提,确保了应用启动时能够正确访问和操作数据。

注意:本文档基于 2026-03-03 版本的数据库脚本编写。随着项目功能的迭代,数据库表结构和初始数据可能会持续演进。如项目运行 SQL 报错,请访问项目仓库的 /resources/database 目录,或关注版本更新说明。

SQL 脚本文件说明

在项目的 /resources/database 目录下,包含以下两个核心 SQL 脚本文件:

~/workspace/nageoffer/ragent/resources/database git:[main]
ls
init_data.sql schema_table.sql

文件说明:

文件名功能描述执行顺序
schema_table.sql包含数据库创建语句、表结构定义以及索引配置1
init_data.sql包含业务初始化数据,如系统配置、角色权限等2

⚠️ 重要提示: 必须按照上述顺序依次执行 SQL 脚本,否则可能因表不存在而导致数据插入失败。

初始化方式

考虑到不同开发者使用的 MySQL 客户端工具各不相同,本章节将提供两种通用的数据初始化方式,你可以根据实际情况选择其中任意一种:

  1. 命令行方式(推荐,最通用)
  2. 图形化客户端工具(如 TablePlus、Navicat、MySQL Workbench 等)
  3. IDE 内置工具(如 IntelliJ IDEA、DataGrip 等)

方式一:图形化客户端工具(推荐)

图形化工具提供了更直观的操作界面,适合不熟悉命令行的开发者。以下以 TablePlus 为例进行演示,其他工具(如 Navicat、MySQL Workbench)的操作流程类似。

1.1 TablePlus

由于我平时习惯使用 TablePlus,因此本次演示将基于该工具进行操作。如果你使用的是 Navicat,可以参考下方对应章节。

步骤 1:连接到 MySQL 数据库

打开 TablePlus,点击 新建连接,填入 MySQL 连接信息:

  • Host:127.0.0.1
  • Port:3306
  • User:root
  • Password:root

点击 连接 按钮,成功连接到 MySQL 服务器。

步骤 2:导入建表脚本

在 TablePlus 界面中,依次点击顶部菜单 文件 → 导入 → From SQL dump...,选择 schema_table.sql 文件,点击 执行 按钮。或者按照下图形式:

执行成功后,可在左侧数据库列表中看到新创建的 ragent 数据库及其下的所有表结构。

步骤 3:导入初始化数据

重复上述步骤,导入 init_data.sql 文件。执行成功后,可打开 t_user 表查看是否有初始数据。

select * from t_user;

1.2 其他常见工具

Navicat:

  1. 连接到 MySQL 数据库
  2. 右键点击连接,选择 运行 SQL 文件
  3. 依次选择 schema_table.sqlinit_data.sql 执行

MySQL Workbench:

  1. 连接到 MySQL 数据库
  2. 点击顶部菜单 文件 → 打开 SQL 脚本
  3. 依次打开 schema_table.sqlinit_data.sql,点击 ⚡执行 按钮

DBeaver:

  1. 连接到 MySQL 数据库
  2. 右键点击连接,选择 SQL 编辑器 → 打开 SQL 脚本
  3. 依次选择 schema_table.sqlinit_data.sql,按 Ctrl + Enter 执行

方式二:命令行初始化

命令行方式是最通用且最可靠的初始化方法,不依赖任何第三方工具,适用于所有操作系统。

步骤 1:进入 SQL 脚本目录

cd ~/workspace/nageoffer/ragent/resources/database

步骤 2:执行建表脚本

mysql -h 127.0.0.1 -P 3306 -u root -proot < schema_table.sql

步骤 3:执行数据初始化脚本

mysql -h 127.0.0.1 -P 3306 -u root -proot < init_data.sql

如果你的 MySQL 密码不是 root,请将命令中的 -proot 替换为 -p你的密码。注意 -p 与密码之间没有空格。

参数说明:

  • -h 127.0.0.1:指定 MySQL 服务器地址
  • -P 3306:指定 MySQL 服务端口
  • -u root:指定登录用户名
  • -proot:指定登录密码
  • < 文件名:从指定文件读取 SQL 语句并执行

执行成功后,命令行不会输出任何信息。如果出现错误提示,请检查 MySQL 连接信息是否正确,或查看错误信息进行排查。

验证初始化结果

完成数据初始化后,建议通过以下方式验证是否成功:

1. 检查数据库和表

使用任意 MySQL 客户端工具,连接到 MySQL 服务器,执行以下命令:

-- 查看所有数据库
SHOW DATABASES;

-- 切换到 ragent 数据库
USE ragent;

-- 查看所有表
SHOW TABLES;

正常情况下,应该能看到 ragent 数据库及其包含的所有业务表。

2. 检查初始化数据

随机选择一张包含初始数据的表,执行查询语句:

select * from t_user;

如果能够查询到数据记录,说明初始化数据已成功导入。

3. 检查项目配置

确认项目配置文件 application.yaml 中的数据库连接信息与实际环境一致:

spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: root
url: jdbc:mysql://127.0.0.1:3306/ragent?characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true

⚠️ 注意事项: 如果你在安装 MySQL 时使用了不同的端口或密码,请务必在配置文件中进行相应调整。

常见问题排查

问题 1:执行 SQL 脚本时报错 Table doesn't exist

原因: 未按顺序执行 SQL 脚本,先执行了 init_data.sql 导致找不到表。

解决方案: 先执行 schema_table.sql 创建表结构,再执行 init_data.sql 插入数据。

问题 2:执行脚本时提示 Access denied

原因: MySQL 用户名或密码不正确,或用户没有相应的权限。

解决方案:

  • 检查用户名和密码是否正确
  • 确认用户具有创建数据库和表的权限
  • 如使用 root 用户仍无法连接,尝试重新设置 root 密码

问题 3:中文数据乱码

原因: 数据库或表的字符集配置不正确。

解决方案: 在执行脚本前,确保 MySQL 使用 UTF-8 字符集:

SET NAMES utf8mb4;

或在 MySQL 配置文件 my.cnf 中添加:

[mysqld]
character-set-server=utf8mb4

[client]
default-character-set=utf8mb4

版本更新说明

随着 Ragent AI 项目的持续迭代,数据库表结构和初始数据可能会发生变化。为了保证系统的稳定性和功能的完整性,建议定期关注以下内容:

  1. SQL 脚本版本:每次项目版本更新时,请检查 /resources/database 目录下的 SQL 脚本是否有更新。
  2. 增量更新脚本:对于已有环境,我们会提供增量更新脚本(如 upgrade_v1.0_to_v1.1.sql),避免重新初始化导致数据丢失。
  3. 变更日志:重大数据库变更会在项目的 CHANGELOG.md 文件中说明,包括新增表、字段变更、索引优化等。

提示:如果你是首次部署,只需执行最新版本的 schema_table.sqlinit_data.sql 即可。如果是从旧版本升级,请查阅版本间的增量更新脚本。