install.sql 使用说明
1️⃣ install.sql 是什么?
在每个 xbCode 插件目录下,会有一个 install.sql 文件,例如:
/plugin/xbCode/install.sql它的作用是:在插件安装或初始化时,自动创建插件所需的数据表结构。
👉 开发者不需要手工去执行里面的 SQL。
2️⃣ 什么时候会自动执行?
- 当你通过 xbCode 的插件管理 / 安装流程去安装该插件时
- 系统会自动读取插件根目录下的
install.sql - 按顺序执行其中的 SQL 语句(比如:先 DROP 表,再 CREATE 表)
也就是说:
✅ 只要“正确安装插件”,install.sql 里的内容就会自动生效❌ 不需要你登录数据库手动执行
3️⃣ install.sql 里应该放什么内容?
规范要求:只存放「表结构相关」的 SQL,不要放业务数据。
✅ 推荐放入的内容
- 删除旧表的语句(防止重复安装冲突)
- 表结构创建语句(CREATE TABLE)
- 字段注释、默认值、索引等结构信息
以当前 xbCode 插件的 install.sql 为例,它里边包含的就是这些内容:
xb_admin_role表:角色记录xb_admin表:系统管理员xb_admin_rule表:后台菜单xb_config表:配置参数xb_plugins表:插件安装记录
文件里典型的一段结构是这样的(简化展示,不用手动执行,仅示意)👇:
DROP TABLE IF EXISTS `xb_admin_role`;
CREATE TABLE `xb_admin_role` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '序号',
`create_at` datetime DEFAULT NULL COMMENT '创建时间',
...
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色记录';
这类 SQL 全部由系统在安装插件时自动执行。
4️⃣ install.sql 里不要放什么?
为保证插件安装可重复、环境可控,建议:
- 🚫 不要写实际业务数据插入,例如:
- 🚫 不要写与插件无关的表(比如公共业务库里的其他模块表)
- 🚫 不要写会修改已有线上数据的
UPDATE/DELETE之类语句
🔎 如果确实有初始化数据需求(例如:默认管理员、默认菜单配置),建议:
- 通过插件内部代码在第一次访问/启动时初始化
- 或者在插件的安装逻辑(如 Install 类)中以 PHP 代码的形式插入,而不是写在
install.sql里
这样做的好处:
- ✅ 避免多次安装导致重复数据
- ✅ 安装过程更安全,降低误删/误改线上数据风险
- ✅ 方便未来对初始化数据增加逻辑控制(例如只在空表时插入)
5️⃣ 为什么只推荐存放表结构 SQL
- 可重复安装 / 更新更安全DROP TABLE IF EXISTS + CREATE TABLE 是“幂等性”较好的结构操作,即使重新安装插件,也不会产生多份相同数据。
- 和业务数据解耦表结构是“插件本身的定义”,适合固定在 install.sql 中。业务数据会随着实际使用而变化,放在代码/逻辑里更灵活。
- 便于版本升级新版本插件要增加字段或新表时,只需在 SQL 中添加相应结构,安装、升级脚本(或迁移逻辑)可以统一管理这些变化。
6️⃣ 插件开发者实际怎么用?🧑💻
✅ 开发新插件时
- 在插件根目录创建
install.sql - 设计好你的数据表结构,只写:
- 不要写任何
INSERT / UPDATE / DELETE业务数据操作
✅ 更新已有插件的表结构时
- 新增字段 / 新表:
- 记住:
install.sql更适合作为**“全新安装时的数据结构蓝本”**
7️⃣ 给开发者的一段简短总结 ✍️
install.sql= 插件数据表结构的“安装脚本” 📜- 插件安装时自动执行,无需手工跑 SQL ⚙️
- 文件中只放表结构相关的 SQL(建表、删表),不要放业务数据 🚫
- 初始化数据请通过代码逻辑处理,而不是写死在
install.sql里 ✅