peixue-dev/Archive/[一次性]手动执行SQL步骤-2026-02-28.md

4.2 KiB
Raw Blame History

手动执行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.exe
  • C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exe
  • C:\xampp\mysql\bin\mysql.exe
  • C:\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路径
  • 最直观,可以看到执行过程
  • 最可靠,不会有路径问题

执行完成后,告诉我结果,我们继续下一步!