## 数据库 我们建议当前插件设计数据库,应遵循将插件数据表统一标识来管理维护。例如: 一个完整的应用,比如工单管理系统,那么他的表名应该为 `sa_worker_event` `sa_worker_log` 数据库的表名称一律为小写字母,[a-z]、下划线,不能为中文字符或者大写字母或数字 字符集统一使用 `utf8mb4_general_ci` ,方便emoji表情以及其他字符的写入 字段内容为 `json` 数据时, 如果需要使用json表单组件,则请将字段类型设置为JSON ## 数据表名规范 例如: ``` __PREFIX__worker_log __PREFIX__worker_item __PREFIX__worker_comment ``` 其中 `worker` 为你的插件标识, `__PREFIX__` 为数据表前缀。 ## SQL安装脚本 在插件创建后,会自动生成一个 `install.sql` 文件,里面是空白了,数据库需要自己设计完成,并测试后,使用NavicatForMySQL工具进行多表导出 并且以 以下格式复制在 `install.sql` 文件中; 例如: ``` SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for __PREFIX__ceshi -- ---------------------------- DROP TABLE IF EXISTS `__PREFIX__ceshi`; CREATE TABLE `__PREFIX__ceshi` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名;权栈', `sex` int(1) NULL DEFAULT NULL COMMENT '性别', `avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像', `hobby` set('write','game','read') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '爱好', `text` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '内容页', `age` int(11) NULL DEFAULT NULL COMMENT '年龄', `tags` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '关键词', `album` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '相册;多文件上传必须为text类型', `stars` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '星级', `interest` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '签名', `week` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '星期', `birthday` int(11) NULL DEFAULT NULL COMMENT '生日;必须要int类型', `json` json NULL COMMENT '数组', `color` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '色彩', `lines` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '额度', `status` int(255) NULL DEFAULT NULL COMMENT '状态', `city` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '城市', `content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '内容;内容字段必须是longtext类型', `update_time` int(11) NULL DEFAULT NULL COMMENT '更新时间', `create_time` int(11) NULL DEFAULT NULL COMMENT '创建时间', `delete_time` int(11) NULL DEFAULT NULL COMMENT '软删除标识', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Records of __PREFIX__ceshi -- ---------------------------- INSERT INTO `__PREFIX__ceshi` VALUES (1, '张三', 1, '/upload/avatars/f8e34ec67a2a0233_100x100.jpg', 'write,read', NULL, NULL, NULL, 'a:1:{i:0;a:2:{s:3:\"src\";s:44:\"/upload/avatars/f8e34ec67a2a0233_100x100.jpg\";s:5:\"title\";s:0:\"\";}}', '2', NULL, NULL, NULL, '{\"name\": \"hehe\"}', NULL, NULL, NULL, '北戴河区', '# Markdown编辑器\n', 1657336703, 1656980177, NULL); SET FOREIGN_KEY_CHECKS = 1; ``` `__PREFIX__` 用于将在执行导入时自动替换为用户数据库配置的表前缀。如果在版本升级时插件表结构需要变更,需要在 `install.sql` 追加变更的SQL语句,如 ``` -- -- 1.0.1 -- ALTER TABLE `__PREFIX__ceshi` ADD COLUMN `name` varchar(64) NULL DEFAULT '' COMMENT '名称' AFTER `title`; ``` 同时注意上方的 `CREATE TABLE IF NOT EXISTS __PREFIX__ceshi` 语句中字段 `name` 的创建必须存在。 或者你也可以在插件根目录下 找到 `Upgrade.php` 文件,实现里面的execute方法,来执行表结构,字段类型的修改 ## SQL卸载脚本 ``` DROP TABLE IF EXISTS `__PREFIX__demo`; ``` 我们建议,如果存在数据库表的话,最好要提交给用户一个卸载脚本,在卸载的时候,提示用户备份数据即可! ## 注意事项 1、请确保你当前开发的插件数据表的格式为 `__PREFIX__yourplugin_item` 如果主表的话,可以叫做 ` __PREFIX__yourplugin` 2、表注释里面,请勿包含特殊字符,请将数据表字符集设置为 `utf8mb4_general_ci` 3、生成后请测试代码是否存在BUG,如果你要使用MySQL8版本,请开启sql_model 组排序功能 更新于 2026-08-09 15:54 阅读 2 ← 插件菜单 代码生成 → 相关问题 插件简介 新建插件 插件目录 插件配置 控制器模型 插件事件 插件菜单 代码生成