Skip to content

4.9 数据库设计 ​

概述

项目支持 MySQL、PostgreSQL、SQL Server、Oracle、SQLite 五种数据库,通过 .env 的 DATABASE.TYPE 一键切换。所有数据库共用同一套代码,无需修改业务逻辑。本章涵盖命名规范、表结构设计、字段说明、索引策略和多数据库适配。

命名规范 ​

对象规范示例
表名think_ 前缀 + 小写下划线think_user、think_article
字段名小写下划线create_time、user_name
主键统一 id,INT 自增id INT PRIMARY KEY
外键表名_iduser_id、role_id
索引idx_字段名idx_status、idx_tenant_id
唯一索引uk_字段名uk_username

公共字段 ​

所有业务表必须包含以下公共字段,由 BaseModel 自动维护:

sql
-- MySQL 格式
id              INT PRIMARY KEY AUTO_INCREMENT  COMMENT '主键',
is_delete       TINYINT(1) DEFAULT 0            COMMENT '软删除 0=正常 1=已删除',
create_user     VARCHAR(50) DEFAULT ''           COMMENT '创建人',
create_time     DATETIME                         COMMENT '创建时间',
update_user     VARCHAR(50) DEFAULT ''           COMMENT '更新人',
update_time     DATETIME                         COMMENT '更新时间'
字段自动维护方说明
is_deleteBaseModel 软删除机制softDelete() 设置为 1,全局查询范围自动过滤
create_userBaseModel onBeforeInsert取当前登录用户名,无用户时留空
create_timeBaseModel onBeforeInsert取当前时间,已传入则不覆盖
update_userBaseModel onBeforeUpdate取当前登录用户名
update_timeBaseModel onBeforeUpdate始终覆盖为当前时间

核心表清单 ​

用户与权限(6 张表) ​

表名说明Logic 基类
think_user用户表BaseTenantLogic
think_user_role用户角色关联表(N:N 中间表)—
think_role角色表BaseLogic
think_role_menu角色菜单关联表(N:N 中间表)—
think_menu菜单/权限表BaseLogic
think_dept部门表(树形)BaseTenantLogic

关联关系:

text
think_user ──┐
             │ N:N (think_user_role)
think_role ──┤
             │ N:N (think_role_menu)
think_menu ──┘

think_dept ←── think_user.dept_id
think_tenant ←── think_user.tenant_id

组织架构(3 张表) ​

表名说明Logic 基类
think_dept部门表(树形,parent_id)BaseTenantLogic
think_position岗位表BaseTenantLogic
think_level职级表BaseTenantLogic

租户(1 张表) ​

表名说明Logic 基类
think_tenant租户表BaseLogic

系统配置(5 张表) ​

表名说明Logic 基类
think_dict字典表BaseLogic
think_dict_item字典项表BaseLogic
think_config配置组表BaseLogic
think_config_item配置项表BaseLogic
think_param系统参数表BaseLogic

关联关系:

text
think_dict ←── think_dict_item.dict_id
think_config ←── think_config_item.config_id

内容管理(4 张表) ​

表名说明Logic 基类
think_article文章表BaseTenantLogic
think_category文章分类表(树形)BaseTenantLogic
think_link友情链接表BaseTenantLogic
think_notice通知公告表BaseTenantLogic

日志审计(2 张表) ​

表名说明Logic 基类
think_login_log登录日志表BaseLogic
think_operation_log操作日志表BaseLogic

定时任务(2 张表) ​

表名说明Logic 基类
think_job定时任务表BaseLogic
think_job_log定时任务执行日志表BaseLogic

关联关系:

text
think_job ←── think_job_log.job_id

基础数据(2 张表) ​

表名说明Logic 基类
think_city城市行政区划表(树形,pid)BaseLogic
think_file_template文件模板表BaseLogic

共计 25 张业务表(不含中间表)。

关键表字段说明 ​

think_user(用户表) ​

字段类型说明
idINT主键
usernameVARCHAR(50)用户名(登录账号)
passwordVARCHAR(255)密码(bcrypt 加密)
saltVARCHAR(50)密码盐值
realnameVARCHAR(50)姓名
genderTINYINT性别(字典 gender)
mobileVARCHAR(20)手机号
emailVARCHAR(100)邮箱
avatarVARCHAR(500)头像路径
statusTINYINT状态(字典 user_status)
dept_idINT部门 ID
level_idINT职级 ID
position_idINT岗位 ID
tenant_idINT租户 ID
province_codeVARCHAR(20)省编码
city_codeVARCHAR(20)市编码
district_codeVARCHAR(20)区编码
street_codeVARCHAR(20)街道编码
city_infoVARCHAR(200)城市名称拼接
is_deleteTINYINT(1)软删除
create_userVARCHAR(50)创建人
create_timeDATETIME创建时间
update_userVARCHAR(50)更新人
update_timeDATETIME更新时间

think_role(角色表) ​

字段类型说明
idINT主键
nameVARCHAR(50)角色名称
codeVARCHAR(50)角色编码
data_scopeTINYINT数据权限范围:1=全部 2=本部门 3=仅本人
statusTINYINT状态
remarkVARCHAR(500)备注
sortINT排序
...公共字段

think_menu(菜单/权限表) ​

字段类型说明
idINT主键
parent_idINT父级 ID(0=顶级)
nameVARCHAR(50)菜单名称
permissionVARCHAR(100)权限标识(如 sys:user:add)
typeTINYINT类型:0=目录 1=菜单 2=按钮
pathVARCHAR(200)路由路径
iconVARCHAR(100)图标
sortINT排序
statusTINYINT状态
remarkVARCHAR(500)备注
...公共字段

think_tenant(租户表) ​

字段类型说明
idINT主键
nameVARCHAR(100)租户名称
codeVARCHAR(50)租户编码(系统自动生成:T+4位ID)
statusTINYINT状态(字典 tenant_status):0=禁用 1=启用
expire_timeDATETIME过期时间
max_user_numINT最大用户数限制
contact_nameVARCHAR(50)联系人
contact_phoneVARCHAR(20)联系电话
remarkVARCHAR(500)备注
...公共字段

think_article(文章表) ​

字段类型说明
idINT主键
titleVARCHAR(200)标题
category_idINT分类 ID
coverVARCHAR(500)封面图路径
contentTEXT内容(富文本,含 [IMG_URL] 占位符)
authorVARCHAR(50)作者
statusTINYINT状态(字典 article_status):0=正常 1=下架
sortINT排序
tenant_idINT租户 ID
...公共字段

索引策略 ​

推荐索引 ​

sql
-- 用户表:高频查询字段
ALTER TABLE think_user ADD INDEX idx_username (username);
ALTER TABLE think_user ADD INDEX idx_tenant_id (tenant_id);
ALTER TABLE think_user ADD INDEX idx_dept_id (dept_id);
ALTER TABLE think_user ADD INDEX idx_status (status);

-- 角色关联表:外键索引
ALTER TABLE think_user_role ADD INDEX idx_user_id (user_id);
ALTER TABLE think_user_role ADD INDEX idx_role_id (role_id);
ALTER TABLE think_role_menu ADD INDEX idx_role_id (role_id);
ALTER TABLE think_role_menu ADD INDEX idx_menu_id (menu_id);

-- 文章表:常用过滤字段
ALTER TABLE think_article ADD INDEX idx_category_id (category_id);
ALTER TABLE think_article ADD INDEX idx_status (status);
ALTER TABLE think_article ADD INDEX idx_tenant_id (tenant_id);

-- 日志表:按时间查询
ALTER TABLE think_login_log ADD INDEX idx_create_time (create_time);
ALTER TABLE think_operation_log ADD INDEX idx_create_time (create_time);
ALTER TABLE think_job_log ADD INDEX idx_job_id (job_id);

-- 菜单表:树形查询
ALTER TABLE think_menu ADD INDEX idx_parent_id (parent_id);

-- 字典项表:按字典 ID 查询
ALTER TABLE think_dict_item ADD INDEX idx_dict_id (dict_id);
ALTER TABLE think_config_item ADD INDEX idx_config_id (config_id);

-- 城市表:按编码查询
ALTER TABLE think_city ADD INDEX idx_area_code (area_code);
ALTER TABLE think_city ADD INDEX idx_parent_code (parent_code);
ALTER TABLE think_city ADD INDEX idx_pid (pid);

索引设计原则 ​

原则说明
外键必加所有 _id 外键字段都应加索引
过滤字段pageEqFields 中配置的精确匹配字段应加索引
模糊搜索pageLikeFields 中的字段可考虑全文索引,但 LIKE '%xx%' 无法用普通索引
排序字段pageOrderBy 中的默认排序字段可加索引
时间字段日志表的 create_time 必加索引(按时间范围查询)

多数据库支持 ​

支持的数据库 ​

数据库type 值默认端口默认用户PHP 扩展
MySQLmysql3306rootpdo_mysql
PostgreSQLpgsql5432postgrespdo_pgsql
SQL Serversqlsrv1433sapdo_sqlsrv
Oracleoracle1521-pdo_oci
SQLitesqlite--pdo_sqlite

切换数据库 ​

只需修改 .env 文件,无需改动任何代码:

ini
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = rxthinkcmf.thinkphp6.elevue
USERNAME = root
PASSWORD = root
HOSTPORT = 3306
ini
[DATABASE]
TYPE = pgsql
HOSTNAME = 127.0.0.1
DATABASE = rxthinkcmf.thinkphp6.elevue
USERNAME = postgres
PASSWORD = root
HOSTPORT = 5432
ini
[DATABASE]
TYPE = sqlsrv
HOSTNAME = 127.0.0.1
DATABASE = rxthinkcmf.thinkphp6.elevue
USERNAME = sa
PASSWORD = root
HOSTPORT = 1433
ini
[DATABASE]
TYPE = oracle
HOSTNAME = 127.0.0.1
DATABASE = rxthinkcmf.thinkphp6.elevue
USERNAME = root
PASSWORD = root
HOSTPORT = 1521
ini
[DATABASE]
TYPE = sqlite
DATABASE = /www/api/runtime/database.sqlite

配置文件结构 ​

php
// config/database.php
return [
    'default' => env('database.type', 'mysql'),
    'connections' => [
        'mysql'  => [...],
        'pgsql'  => [...],
        'sqlsrv' => [...],
        'oracle' => [...],
        'sqlite' => [...],
    ],
];

字段类型映射 ​

通用类型MySQLPostgreSQLSQL ServerOracleSQLite
自增主键INT AUTO_INCREMENTSERIALINT IDENTITYNUMBER + 序列INTEGER PRIMARY KEY
字符串VARCHAR(n)VARCHAR(n)NVARCHAR(n)VARCHAR2(n)TEXT
文本TEXTTEXTNVARCHAR(MAX)CLOBTEXT
布尔TINYINT(1)BOOLEANBITNUMBER(1)INTEGER
日期时间DATETIMETIMESTAMPDATETIME2TIMESTAMPTEXT
小数DECIMAL(m,n)NUMERIC(m,n)DECIMAL(m,n)NUMBER(m,n)REAL

业务代码零修改

ThinkPHP 的 ORM 层会自动处理大部分 SQL 差异,切换数据库只需修改 .env 中的 DATABASE.TYPE,业务代码无需任何修改。

各数据库安装与配置 ​

项目支持五种数据库,按需选择一种即可。

数据库推荐场景难度XAMPP 自带说明
MySQL日常开发、中小项目⭐ 低✅ 是默认推荐,开箱即用
PostgreSQL需要 JSONB、全文检索⭐⭐ 中❌ 否功能丰富,需单独安装
SQLite快速演示、单元测试⭐ 低✅ 是无需数据库服务,零配置
SQL Server企业 Windows 环境⭐⭐ 中驱动自带需单独安装数据库服务
Oracle大型企业项目⭐⭐⭐ 高驱动自带需安装 Instant Client

新手推荐

XAMPP 已集成 MySQL 数据库服务,安装 XAMPP 后无需再单独安装数据库。

MySQL 数据库 ​

MySQL 是项目默认推荐的关系型数据库,XAMPP 已自带,开箱即用。

sh
# XAMPP 已自带 MySQL,无需额外安装
# 在 XAMPP 控制面板启动 MySQL 即可

# 确认扩展已启用(编辑 D:\xampp8.2\php\php.ini):
#   extension=pdo_mysql
# 若前面有分号则去掉,保存后重启 XAMPP

# 创建数据库
D:\xampp8.2\mysql\bin\mysql.exe -u root -proot -e "CREATE DATABASE `rxthinkcmf.thinkphp6.elevue` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
sh
brew install mysql
brew services start mysql
sudo mysql_secure_installation

# 创建数据库
mysql -u root -proot -e "CREATE DATABASE `rxthinkcmf.thinkphp6.elevue` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
sh
sudo apt install mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql
sudo mysql_secure_installation

# 创建数据库
mysql -u root -proot -e "CREATE DATABASE `rxthinkcmf.thinkphp6.elevue` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
sh
sudo dnf install mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo mysql_secure_installation

# 创建数据库
mysql -u root -proot -e "CREATE DATABASE `rxthinkcmf.thinkphp6.elevue` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"

PostgreSQL 数据库 ​

PostgreSQL 功能强大,支持 JSONB、全文检索等高级特性,需单独安装。

sh
# 安装 PostgreSQL
# 访问 https://www.postgresql.org/download/windows/ 下载安装包
# 安装过程中记住设置的密码

# 确认扩展已启用(编辑 D:\xampp8.2\php\php.ini):
#   extension=pdo_pgsql
#   extension=pgsql
# 若前面有分号则去掉,保存后重启 XAMPP

# 设置 postgres 密码(首次)
psql -U postgres -c "ALTER USER postgres WITH PASSWORD 'root';"

# 创建数据库
psql -U postgres -c "CREATE DATABASE \"rxthinkcmf.thinkphp6.elevue\" OWNER postgres ENCODING 'UTF8';"
sh
brew install postgresql
brew services start postgresql

# 设置 postgres 密码
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'root';"

# 创建数据库
sudo -u postgres psql -c "CREATE DATABASE \"rxthinkcmf.thinkphp6.elevue\" OWNER postgres ENCODING 'UTF8';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE \"rxthinkcmf.thinkphp6.elevue\" TO postgres;"
sh
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql

# 设置 postgres 密码
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'root';"

# 创建数据库
sudo -u postgres psql -c "CREATE DATABASE \"rxthinkcmf.thinkphp6.elevue\" OWNER postgres ENCODING 'UTF8';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE \"rxthinkcmf.thinkphp6.elevue\" TO postgres;"
sh
sudo dnf install postgresql-server
sudo postgresql-setup --initdb
sudo systemctl start postgresql

# 设置 postgres 密码
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'root';"

# 创建数据库
sudo -u postgres psql -c "CREATE DATABASE \"rxthinkcmf.thinkphp6.elevue\" OWNER postgres ENCODING 'UTF8';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE \"rxthinkcmf.thinkphp6.elevue\" TO postgres;"

SQLite 数据库 ​

SQLite 无需安装数据库服务器,数据存储在单个文件中,适合开发环境和小型项目。

sh
# XAMPP 已自带 SQLite 扩展,无需额外安装
# 只需创建数据库文件
mkdir D:\xampp\htdocs\runtime
echo. > D:\xampp\htdocs\runtime\database.sqlite

# 确认扩展已启用(编辑 D:\xampp8.2\php\php.ini):
#   extension=pdo_sqlite
#   extension=sqlite3
# 若前面有分号则去掉,保存后重启 XAMPP

# .env 配置
# DATABASE.TYPE = sqlite
# DATABASE.DATABASE = D:/xampp8.2/htdocs/runtime/database.sqlite
sh
brew install php sqlite

# 创建数据库文件
mkdir -p /www/api/runtime
touch /www/api/runtime/database.sqlite
sh
sudo apt install php8.2-sqlite3

# 创建数据库文件
mkdir -p /www/api/runtime
touch /www/api/runtime/database.sqlite
sh
sudo dnf install php-sqlite3

# 创建数据库文件
mkdir -p /www/api/runtime
touch /www/api/runtime/database.sqlite

SQL Server 数据库 ​

SQL Server 是微软商业数据库,XAMPP 已自带 pdo_sqlsrv 驱动,Windows 下开箱即用。

sh
# SQL Server 需单独安装(XAMPP 不自带数据库服务,但自带 PHP 驱动)
# 1. 下载安装 SQL Server Express:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads
# 2. XAMPP 已自带 pdo_sqlsrv 扩展,在 php.ini 中启用:
#    extension=php_sqlsrv_82_ts_x64.dll
#    extension=php_pdo_sqlsrv_82_ts_x64.dll

# 创建数据库
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.thinkphp6.elevue] COLLATE Chinese_PRC_CI_AS"
sh
# macOS 不原生支持 SQL Server,建议使用 Docker
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=root" \
  -p 1433:1433 --name sqlserver \
  -d mcr.microsoft.com/mssql/server:2022-latest

# 安装 PHP 扩展
pecl install pdo_sqlsrv

# 创建数据库
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.thinkphp6.elevue] COLLATE Chinese_PRC_CI_AS"
sh
# 1. 安装 SQL Server
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list)"
sudo apt update
sudo apt install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup

# 2. 安装命令行工具
sudo apt install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc

# 3. 安装 PHP 扩展
sudo pecl install pdo_sqlsrv
echo "extension=pdo_sqlsrv.so" | sudo tee /etc/php/8.2/mods-available/pdo_sqlsrv.ini
sudo phpenmod pdo_sqlsrv

# 创建数据库
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.thinkphp6.elevue] COLLATE Chinese_PRC_CI_AS"
sh
# 1. 安装 SQL Server
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo
sudo dnf install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup

# 2. 安装命令行工具
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo
sudo dnf install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc

# 3. 安装 PHP 扩展
sudo pecl install pdo_sqlsrv
echo "extension=pdo_sqlsrv.so" | sudo tee /etc/php.d/pdo_sqlsrv.ini

# 创建数据库
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.thinkphp6.elevue] COLLATE Chinese_PRC_CI_AS"

Oracle 数据库 ​

Oracle 是企业级商业数据库,需手动安装 Instant Client 和 pdo_oci 扩展。

sh
# XAMPP 已自带 php_pdo_oci.dll,只需安装 Oracle Instant Client 并在 php.ini 中启用

# 1. 安装 Oracle Instant Client
#    下载地址:https://www.oracle.com/database/technologies/instant-client/downloads.html
#    选择 Basic Package,x64,推荐 19c
#    解压到 C:\oracle\instantclient_19_20(⚠️ 避免空格与中文)

# 2. 配置系统环境变量
#    将 C:\oracle\instantclient_19_20 添加到系统 PATH

# 3. 安装 VC++ 运行库(必装)
#    下载:https://aka.ms/vc14/vc_redist.x64.exe

# 4. 启用扩展
#    编辑 D:\xampp8.2\php\php.ini,去掉分号:
#    extension=pdo_oci

# 5. 重启 XAMPP(完全关闭再启动)

# .env 配置
# DATABASE.TYPE = oracle
# DATABASE.HOSTNAME = 127.0.0.1
# DATABASE.DATABASE = rxthinkcmf.thinkphp6.elevue
# DATABASE.USERNAME = root
# DATABASE.PASSWORD = root
# DATABASE.HOSTPORT = 1521
sh
# Oracle 不原生支持 macOS,建议使用 Docker
docker run -d --name oracle-xe -p 1521:1521 \
  -e ORACLE_PWD=root \
  gvenzl/oracle-xe:21-slim

# 安装 PHP 扩展
pecl install pdo_oci
sh
# 1. 安装 Oracle Database
sudo dpkg -i oracle-database-xe-21c-1.0-1.x86_64.deb
sudo /etc/init.d/oracle-xe-21c configure

# 2. 安装 Oracle Instant Client
sudo dpkg -i oracle-instantclient-basic-*.deb
sudo dpkg -i oracle-instantclient-devel-*.deb

# 3. 安装 PHP 扩展
sudo pecl install pdo_oci
echo "extension=pdo_oci.so" | sudo tee /etc/php/8.2/mods-available/pdo_oci.ini
sudo phpenmod pdo_oci

# 4. 创建表空间和用户
sqlplus system/root@localhost:1521/XE <<EOF
CREATE TABLESPACE "rxthinkcmf_thinkphp6_elevue" DATAFILE '/opt/oracle/oradata/XE/rxthinkcmf_thinkphp6_elevue.dbf' SIZE 100M AUTOEXTEND ON NEXT 100M;
CREATE USER "root" IDENTIFIED BY "root" DEFAULT TABLESPACE "rxthinkcmf_thinkphp6_elevue";
GRANT CONNECT, RESOURCE, CREATE VIEW TO "root";
GRANT UNLIMITED TABLESPACE TO "root";
EXIT;
EOF
sh
# 1. 安装 Oracle Database
sudo rpm -ivh oracle-database-xe-21c-1.0-1.x86_64.rpm
sudo /etc/init.d/oracle-xe-21c configure

# 2. 安装 Oracle Instant Client
sudo rpm -ivh oracle-instantclient-basic-*.rpm
sudo rpm -ivh oracle-instantclient-devel-*.rpm

# 3. 安装 PHP 扩展
sudo pecl install pdo_oci
echo "extension=pdo_oci.so" | sudo tee /etc/php/8.2/mods-available/pdo_oci.ini
sudo phpenmod pdo_oci

# 4. 创建表空间和用户
sqlplus system/root@localhost:1521/XE <<EOF
CREATE TABLESPACE "rxthinkcmf_thinkphp6_elevue" DATAFILE '/opt/oracle/oradata/XE/rxthinkcmf_thinkphp6_elevue.dbf' SIZE 100M AUTOEXTEND ON NEXT 100M;
CREATE USER "root" IDENTIFIED BY "root" DEFAULT TABLESPACE "rxthinkcmf_thinkphp6_elevue";
GRANT CONNECT, RESOURCE, CREATE VIEW TO "root";
GRANT UNLIMITED TABLESPACE TO "root";
EXIT;
EOF

SQL 脚本 ​

项目为每种数据库提供了独立的 SQL 脚本,存放在 document/ 目录下按数据库类型分组:

text
document/
├── mysql/
│   └── rxthinkcmf.thinkphp6.elevue.sql      # MySQL 版本
├── postgresql/
│   └── rxthinkcmf.thinkphp6.elevue.sql      # PostgreSQL 版本
├── sqlserver/
│   └── rxthinkcmf.thinkphp6.elevue.sql      # SQL Server 版本
├── oracle/
│   └── rxthinkcmf.thinkphp6.elevue.sql      # Oracle 版本
└── sqlite/
    └── rxthinkcmf.thinkphp6.elevue.sql      # SQLite 版本

各数据库脚本包含完整的表结构定义和初始数据(用户、角色、菜单、字典、城市行政区划等),已针对各数据库的 SQL 语法做了适配,可直接导入使用。

导入方法详见 2.4 数据库初始化。

慢查询排查 ​

ini
# MySQL my.cnf
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

注意

项目所有查询都通过 ThinkPHP ORM 构建,不会出现原生 SQL 注入。如需排查慢查询,建议开启数据库慢查询日志,而非在代码层面埋点。

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