关于install.sql文件

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,不要放业务数据。

✅ 推荐放入的内容

  1. 删除旧表的语句(防止重复安装冲突)
  2. 表结构创建语句(CREATE TABLE)
  3. 字段注释、默认值、索引等结构信息

以当前 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

  1. 可重复安装 / 更新更安全DROP TABLE IF EXISTS + CREATE TABLE 是“幂等性”较好的结构操作,即使重新安装插件,也不会产生多份相同数据。
  2. 和业务数据解耦表结构是“插件本身的定义”,适合固定在 install.sql 中。业务数据会随着实际使用而变化,放在代码/逻辑里更灵活。
  3. 便于版本升级新版本插件要增加字段或新表时,只需在 SQL 中添加相应结构,安装、升级脚本(或迁移逻辑)可以统一管理这些变化。

6️⃣ 插件开发者实际怎么用?🧑‍💻

✅ 开发新插件时

  1. 在插件根目录创建 install.sql
  2. 设计好你的数据表结构,只写:
  3. 不要写任何 INSERT / UPDATE / DELETE 业务数据操作

✅ 更新已有插件的表结构时

  • 新增字段 / 新表:
  • 记住:install.sql 更适合作为**“全新安装时的数据结构蓝本”**

7️⃣ 给开发者的一段简短总结 ✍️

  • install.sql = 插件数据表结构的“安装脚本” 📜
  • 插件安装时自动执行,无需手工跑 SQL ⚙️
  • 文件中只放表结构相关的 SQL(建表、删表),不要放业务数据 🚫
  • 初始化数据请通过代码逻辑处理,而不是写死在 install.sql 里 ✅