4.2 KiB
4.2 KiB
手动执行SQL - 创建user_roles表
如果批处理脚本无法执行,请按照以下步骤手动执行
方法1:使用Navicat/DBeaver等数据库工具(推荐)
步骤1:连接数据库
- 主机:115.190.64.57
- 端口:3306
- 用户名:root
- 密码:123456
- 数据库:peidu
步骤2:打开SQL文件
打开文件:D:\peixu-main\peixu\Archive\[一次性]创建user_roles表-2026-02-28.sql
步骤3:执行SQL
点击"运行"或"执行"按钮
步骤4:验证
执行以下SQL验证:
-- 检查表是否创建成功
SHOW TABLES LIKE 'user_roles';
-- 查看数据
SELECT COUNT(*) FROM user_roles;
方法2:复制粘贴SQL(最简单)
步骤1:打开数据库工具
使用Navicat、DBeaver、MySQL Workbench等任意工具
步骤2:连接到数据库
- 主机:115.190.64.57
- 端口:3306
- 用户名:root
- 密码:123456
- 数据库:peidu
步骤3:复制以下SQL并执行
-- ============================================
-- 多身份功能 - 数据库脚本
-- 创建时间:2026-02-28
-- 功能:创建 user_roles 表,支持一个账号多个角色
-- ============================================
-- 1. 创建 user_roles 表
CREATE TABLE IF NOT EXISTS `user_roles` (
`id` BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
`role_type` VARCHAR(50) NOT NULL COMMENT '角色类型:teacher/manager/distributor/provider/parent',
`is_primary` TINYINT DEFAULT 0 COMMENT '是否主身份:0=否,1=是',
`status` TINYINT DEFAULT 1 COMMENT '状态:0=禁用,1=启用',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX `idx_user_id` (`user_id`),
INDEX `idx_role_type` (`role_type`),
UNIQUE KEY `uk_user_role` (`user_id`, `role_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表';
-- 2. 初始化数据:将现有用户的主身份同步到 user_roles 表
INSERT INTO `user_roles` (`user_id`, `role_type`, `is_primary`, `status`)
SELECT
`id` as user_id,
`role` as role_type,
1 as is_primary,
1 as status
FROM `user`
WHERE `role` IS NOT NULL AND `role` != ''
ON DUPLICATE KEY UPDATE `is_primary` = 1;
-- 3. 验证数据
SELECT
'数据同步完成' as message,
COUNT(*) as total_users,
COUNT(DISTINCT user_id) as users_with_roles
FROM user_roles;
-- 4. 查看前10条数据
SELECT
u.id,
u.phone,
u.role as primary_role,
GROUP_CONCAT(ur.role_type) as all_roles,
GROUP_CONCAT(IF(ur.is_primary = 1, '✓', '')) as primary_mark
FROM user u
LEFT JOIN user_roles ur ON u.id = ur.user_id
GROUP BY u.id
LIMIT 10;
步骤4:查看执行结果
如果看到类似以下输出,说明执行成功:
message: 数据同步完成
total_users: 100
users_with_roles: 100
方法3:找到MySQL安装路径
步骤1:查找MySQL安装位置
常见路径:
C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exeC:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exeC:\xampp\mysql\bin\mysql.exeC:\wamp64\bin\mysql\mysql8.0.x\bin\mysql.exe
步骤2:使用完整路径执行
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" -h 115.190.64.57 -P 3306 -u root -p123456 peidu < "D:\peixu-main\peixu\Archive\[一次性]创建user_roles表-2026-02-28.sql"
✅ 验证是否成功
执行以下SQL检查:
-- 1. 检查表是否存在
SHOW TABLES LIKE 'user_roles';
-- 2. 查看表结构
DESC user_roles;
-- 3. 查看数据量
SELECT COUNT(*) as total_records FROM user_roles;
-- 4. 查看前5条数据
SELECT * FROM user_roles LIMIT 5;
-- 5. 检查数据一致性
SELECT
u.id,
u.phone,
u.role as user_table_role,
ur.role_type as user_roles_table_role,
IF(u.role = ur.role_type, '✓ 一致', '✗ 不一致') as consistency
FROM user u
LEFT JOIN user_roles ur ON u.id = ur.user_id AND ur.is_primary = 1
LIMIT 10;
🎯 推荐方法
我最推荐方法2(复制粘贴SQL),因为:
- 最简单,不需要找MySQL路径
- 最直观,可以看到执行过程
- 最可靠,不会有路径问题
执行完成后,告诉我结果,我们继续下一步!