修改目录
This commit is contained in:
76
assets/database/alter_collation_to_general_ci.sql
Normal file
76
assets/database/alter_collation_to_general_ci.sql
Normal file
@@ -0,0 +1,76 @@
|
||||
-- =====================================================
|
||||
-- 修改数据库字段排序规则脚本
|
||||
-- 从 utf8mb4_unicode_ci 改为 utf8mb4_general_ci
|
||||
-- 目标表:3 个表,45 个字段
|
||||
-- 执行时间:2026-02-28
|
||||
-- =====================================================
|
||||
|
||||
USE
|
||||
ccdi;
|
||||
|
||||
-- =====================================================
|
||||
-- 1. 修改 ccdi_base_staff 表(5 个字段)
|
||||
-- =====================================================
|
||||
ALTER TABLE ccdi_base_staff MODIFY COLUMN name varchar (100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '姓名';
|
||||
ALTER TABLE ccdi_base_staff MODIFY COLUMN phone varchar (11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '电话';
|
||||
ALTER TABLE ccdi_base_staff MODIFY COLUMN status char (1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '状态(0在职 1离职)';
|
||||
ALTER TABLE ccdi_base_staff MODIFY COLUMN create_by varchar (64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者';
|
||||
ALTER TABLE ccdi_base_staff MODIFY COLUMN update_by varchar (64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新者';
|
||||
|
||||
-- =====================================================
|
||||
-- 2. 修改 ccdi_biz_intermediary 表(20 个字段)
|
||||
-- =====================================================
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN biz_id varchar (50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '人员ID';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN person_type varchar (50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '人员类型';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN person_sub_type varchar (50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '人员子类型';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN name varchar (100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '姓名';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN gender char (1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '性别';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN id_type varchar (20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '身份证' COMMENT '证件类型';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN person_id varchar (50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '证件号码';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN mobile varchar (20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '手机号码';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN wechat_no varchar (50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '微信号';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN contact_address varchar (200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '联系地址';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN company varchar (100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '所在公司';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN social_credit_code varchar (50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '企业统一信用码';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN position varchar (50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '职位';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN related_num_id varchar (50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '关联人员ID';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN relation_type varchar (50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '关联关系';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN data_source varchar (20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'MANUAL' COMMENT '数据来源';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN remark varchar (500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注信息';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN created_by varchar (64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '记录创建人';
|
||||
ALTER TABLE ccdi_biz_intermediary MODIFY COLUMN updated_by varchar (64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '记录更新人';
|
||||
|
||||
-- =====================================================
|
||||
-- 3. 修改 ccdi_enterprise_base_info 表(20 个字段)
|
||||
-- =====================================================
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN social_credit_code varchar (50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '统一社会信用代码';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN enterprise_name varchar (200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '企业名称';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN enterprise_type varchar (50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '企业类型';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN enterprise_nature varchar (50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '企业性质';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN industry_class varchar (50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '行业分类';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN industry_name varchar (100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '所属行业';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN register_address varchar (500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '注册地址';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN legal_representative varchar (100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '法定代表人';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN legal_cert_type varchar (20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '法定代表人证件类型';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN legal_cert_no varchar (50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '法定代表人证件号码';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN shareholder1 varchar (100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '股东1';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN shareholder2 varchar (100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '股东2';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN shareholder3 varchar (100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '股东3';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN shareholder4 varchar (100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '股东4';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN shareholder5 varchar (100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '股东5';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN status varchar (20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '经营状态';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN risk_level varchar (1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '3' COMMENT '风险等级:1-高风险, 2-中风险, 3-低风险';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN ent_source varchar (20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'GENERAL' COMMENT '企业来源:GENERAL-一般企业, EMP_RELATION-员工关系人, CREDIT_CUSTOMER-信贷客户, INTERMEDIARY-中介, BOTH-兼有';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN data_source varchar (20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT 'MANUAL' COMMENT '数据来源';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN created_by varchar (64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建人';
|
||||
ALTER TABLE ccdi_enterprise_base_info MODIFY COLUMN updated_by varchar (64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '更新人';
|
||||
|
||||
-- =====================================================
|
||||
-- 验证修改结果
|
||||
-- =====================================================
|
||||
SELECT COUNT(*) as remaining_unicode_ci_columns
|
||||
FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = 'ccdi'
|
||||
AND COLLATION_NAME = 'utf8mb4_unicode_ci';
|
||||
|
||||
-- 应该返回 0
|
||||
0
assets/database/backup/.gitkeep
Normal file
0
assets/database/backup/.gitkeep
Normal file
450
assets/database/backup/ccdi_data.sql
Normal file
450
assets/database/backup/ccdi_data.sql
Normal file
File diff suppressed because one or more lines are too long
1141
assets/database/backup/ccdi_structure.sql
Normal file
1141
assets/database/backup/ccdi_structure.sql
Normal file
File diff suppressed because it is too large
Load Diff
65
assets/database/staff-enterprise-relation-dict.sql
Normal file
65
assets/database/staff-enterprise-relation-dict.sql
Normal file
@@ -0,0 +1,65 @@
|
||||
-- =====================================================
|
||||
-- 数据字典SQL:员工实体关系模块
|
||||
-- 创建时间: 2026-02-09
|
||||
-- 说明: 包含关系状态和数据来源两个字典类型
|
||||
-- =====================================================
|
||||
|
||||
-- =====================================================
|
||||
-- 一、字典类型定义
|
||||
-- =====================================================
|
||||
|
||||
-- 字典类型:关系状态
|
||||
INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, status, create_dept, create_by, create_time,
|
||||
update_by, update_time, remark)
|
||||
VALUES (NULL, '000000', '关系状态', 'ccdi_relation_status', '0', NULL, 'admin', NOW(), NULL, NULL,
|
||||
'关系状态列表:0-无效,1-有效');
|
||||
|
||||
-- 字典类型:数据来源
|
||||
INSERT INTO sys_dict_type(dict_id, tenant_id, dict_name, dict_type, status, create_dept, create_by, create_time,
|
||||
update_by, update_time, remark)
|
||||
VALUES (NULL, '000000', '数据来源', 'ccdi_data_source', '0', NULL, 'admin', NOW(), NULL, NULL,
|
||||
'数据来源列表:MANUAL-手动录入,SYSTEM-系统同步,IMPORT-批量导入,API-接口获取');
|
||||
|
||||
-- =====================================================
|
||||
-- 二、字典数据定义
|
||||
-- =====================================================
|
||||
|
||||
-- 关系状态字典数据
|
||||
INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class,
|
||||
is_default, status, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES (NULL, '000000', 2, '无效', '0', 'ccdi_relation_status', NULL, 'danger', 'N', '0', NULL, 'admin', NOW(), NULL,
|
||||
NULL, '关系状态:无效');
|
||||
|
||||
INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class,
|
||||
is_default, status, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES (NULL, '000000', 1, '有效', '1', 'ccdi_relation_status', NULL, 'primary', 'Y', '0', NULL, 'admin', NOW(), NULL,
|
||||
NULL, '关系状态:有效');
|
||||
|
||||
-- 数据来源字典数据
|
||||
INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class,
|
||||
is_default, status, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES (NULL, '000000', 1, '手动录入', 'MANUAL', 'ccdi_data_source', NULL, 'default', 'N', '0', NULL, 'admin', NOW(),
|
||||
NULL, NULL, '数据来源:手动录入');
|
||||
|
||||
INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class,
|
||||
is_default, status, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES (NULL, '000000', 2, '系统同步', 'SYSTEM', 'ccdi_data_source', NULL, 'info', 'N', '0', NULL, 'admin', NOW(), NULL,
|
||||
NULL, '数据来源:系统同步');
|
||||
|
||||
INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class,
|
||||
is_default, status, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES (NULL, '000000', 3, '批量导入', 'IMPORT', 'ccdi_data_source', NULL, 'success', 'N', '0', NULL, 'admin', NOW(),
|
||||
NULL, NULL, '数据来源:批量导入');
|
||||
|
||||
INSERT INTO sys_dict_data(dict_code, tenant_id, dict_sort, dict_label, dict_value, dict_type, css_class, list_class,
|
||||
is_default, status, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
VALUES (NULL, '000000', 4, '接口获取', 'API', 'ccdi_data_source', NULL, 'warning', 'N', '0', NULL, 'admin', NOW(), NULL,
|
||||
NULL, '数据来源:接口获取');
|
||||
|
||||
-- =====================================================
|
||||
-- 三、回滚SQL(如需删除这些字典数据,执行以下语句)
|
||||
-- =====================================================
|
||||
-- DELETE FROM sys_dict_data WHERE dict_type = 'ccdi_relation_status';
|
||||
-- DELETE FROM sys_dict_data WHERE dict_type = 'ccdi_data_source';
|
||||
-- DELETE FROM sys_dict_type WHERE dict_type = 'ccdi_relation_status';
|
||||
-- DELETE FROM sys_dict_type WHERE dict_type = 'ccdi_data_source';
|
||||
89
assets/database/staff-enterprise-relation-menu.sql
Normal file
89
assets/database/staff-enterprise-relation-menu.sql
Normal file
@@ -0,0 +1,89 @@
|
||||
-- =====================================================
|
||||
-- 菜单权限SQL:员工实体关系模块
|
||||
-- 创建时间: 2026-02-09
|
||||
-- 说明: 员工实体关系菜单及其按钮权限
|
||||
-- 注意: parent_id 需要根据实际菜单结构调整
|
||||
-- =====================================================
|
||||
|
||||
-- =====================================================
|
||||
-- 一、主菜单配置
|
||||
-- =====================================================
|
||||
|
||||
-- 员工实体关系菜单
|
||||
-- 注意: parent_id = 2000 是"信息维护"一级菜单,如需调整请修改此值
|
||||
-- order_num = 3 表示在"信息维护"下的排序位置(中介黑名单=1,员工信息=2,员工实体关系=3)
|
||||
INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache,
|
||||
menu_type, visible, status, perms, icon, create_by, create_time, remark)
|
||||
VALUES (2030, '员工实体关系', 2000, 3, 'staffEnterpriseRelation', 'ccdiStaffEnterpriseRelation/index', NULL, NULL, 1, 0,
|
||||
'C', '0', '0', 'ccdi:staffEnterpriseRelation:list', '#', 'admin', NOW(), '员工实体关系菜单');
|
||||
|
||||
-- =====================================================
|
||||
-- 二、按钮权限配置
|
||||
-- =====================================================
|
||||
|
||||
-- 员工实体关系查询权限
|
||||
INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache,
|
||||
menu_type, visible, status, perms, icon, create_by, create_time, remark)
|
||||
VALUES (2031, '员工实体关系查询', 2030, 1, '', NULL, NULL, NULL, 1, 0, 'F', '0', '0',
|
||||
'ccdi:staffEnterpriseRelation:query', '#', 'admin', NOW(), '');
|
||||
|
||||
-- 员工实体关系列表权限
|
||||
INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache,
|
||||
menu_type, visible, status, perms, icon, create_by, create_time, remark)
|
||||
VALUES (2032, '员工实体关系列表', 2030, 2, '', NULL, NULL, NULL, 1, 0, 'F', '0', '0',
|
||||
'ccdi:staffEnterpriseRelation:list', '#', 'admin', NOW(), '');
|
||||
|
||||
-- 员工实体关系新增权限
|
||||
INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache,
|
||||
menu_type, visible, status, perms, icon, create_by, create_time, remark)
|
||||
VALUES (2033, '员工实体关系新增', 2030, 3, '', NULL, NULL, NULL, 1, 0, 'F', '0', '0',
|
||||
'ccdi:staffEnterpriseRelation:add', '#', 'admin', NOW(), '');
|
||||
|
||||
-- 员工实体关系修改权限
|
||||
INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache,
|
||||
menu_type, visible, status, perms, icon, create_by, create_time, remark)
|
||||
VALUES (2034, '员工实体关系修改', 2030, 4, '', NULL, NULL, NULL, 1, 0, 'F', '0', '0',
|
||||
'ccdi:staffEnterpriseRelation:edit', '#', 'admin', NOW(), '');
|
||||
|
||||
-- 员工实体关系删除权限
|
||||
INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache,
|
||||
menu_type, visible, status, perms, icon, create_by, create_time, remark)
|
||||
VALUES (2035, '员工实体关系删除', 2030, 5, '', NULL, NULL, NULL, 1, 0, 'F', '0', '0',
|
||||
'ccdi:staffEnterpriseRelation:remove', '#', 'admin', NOW(), '');
|
||||
|
||||
-- 员工实体关系导出权限
|
||||
INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache,
|
||||
menu_type, visible, status, perms, icon, create_by, create_time, remark)
|
||||
VALUES (2036, '员工实体关系导出', 2030, 6, '', NULL, NULL, NULL, 1, 0, 'F', '0', '0',
|
||||
'ccdi:staffEnterpriseRelation:export', '#', 'admin', NOW(), '');
|
||||
|
||||
-- 员工实体关系导入权限
|
||||
INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache,
|
||||
menu_type, visible, status, perms, icon, create_by, create_time, remark)
|
||||
VALUES (2037, '员工实体关系导入', 2030, 7, '', NULL, NULL, NULL, 1, 0, 'F', '0', '0',
|
||||
'ccdi:staffEnterpriseRelation:import', '#', 'admin', NOW(), '');
|
||||
|
||||
-- =====================================================
|
||||
-- 三、权限标识说明
|
||||
-- =====================================================
|
||||
-- ccdi:staffEnterpriseRelation:query - 查询详情权限
|
||||
-- ccdi:staffEnterpriseRelation:list - 查询列表权限
|
||||
-- ccdi:staffEnterpriseRelation:add - 新增权限
|
||||
-- ccdi:staffEnterpriseRelation:edit - 修改权限
|
||||
-- ccdi:staffEnterpriseRelation:remove - 删除权限
|
||||
-- ccdi:staffEnterpriseRelation:export - 导出权限
|
||||
-- ccdi:staffEnterpriseRelation:import - 导入权限
|
||||
|
||||
-- =====================================================
|
||||
-- 四、菜单关联说明
|
||||
-- =====================================================
|
||||
-- 上级菜单:menu_id = 2000(信息维护)
|
||||
-- 同级菜单:
|
||||
-- - menu_id = 2001(中介黑名单管理)
|
||||
-- - menu_id = 2002(员工信息维护)
|
||||
-- - menu_id = 2030(员工实体关系)[本菜单]
|
||||
|
||||
-- =====================================================
|
||||
-- 五、回滚SQL(如需删除这些菜单,执行以下语句)
|
||||
-- =====================================================
|
||||
-- DELETE FROM sys_menu WHERE menu_id BETWEEN 2030 AND 2037;
|
||||
505
assets/database/数据库迁移操作指南.md
Normal file
505
assets/database/数据库迁移操作指南.md
Normal file
@@ -0,0 +1,505 @@
|
||||
# CCDI 数据库迁移操作指南
|
||||
|
||||
## 概述
|
||||
|
||||
本文档提供 CCDI 纪检初核系统数据库迁移的详细操作步骤,包括从开发环境导出数据库和导入到生产/测试环境。
|
||||
|
||||
## 脚本说明
|
||||
|
||||
项目提供两个独立的脚本:
|
||||
|
||||
1. **export_database.sh** - 数据库导出脚本
|
||||
- 从开发环境导出数据库
|
||||
- 生成表结构和数据文件到 `doc/database/backup/` 文件夹
|
||||
- 配置已内置在脚本顶部
|
||||
|
||||
2. **import_database.sh** - 数据库导入脚本
|
||||
- 从 `doc/database/backup/` 文件夹读取备份文件
|
||||
- 导入到指定的目标环境(dev/test/prod)
|
||||
- 配置已内置在脚本顶部
|
||||
|
||||
## 文件结构
|
||||
|
||||
```
|
||||
项目根目录/
|
||||
├── export_database.sh # 导出脚本(配置已内置)
|
||||
├── import_database.sh # 导入脚本(配置已内置)
|
||||
└── doc/
|
||||
└── database/
|
||||
├── 数据库迁移操作指南.md # 本文档
|
||||
├── alter_collation_to_general_ci.sql # 排序规则修改脚本
|
||||
└── backup/ # 备份文件夹
|
||||
├── .gitkeep
|
||||
├── ccdi_structure.sql # 表结构(~60KB)
|
||||
└── ccdi_data.sql # 数据文件(~5.7MB)
|
||||
```
|
||||
|
||||
**注意:** 数据库配置已直接内置在脚本中,无需额外的配置文件。
|
||||
|
||||
## 前置条件
|
||||
|
||||
### 必需工具
|
||||
|
||||
- MySQL 客户端工具(包含 mysqldump 和 mysql 命令)
|
||||
- Bash shell 环境(Windows 用户可使用 Git Bash)
|
||||
- 网络访问权限(能连接源数据库和目标数据库)
|
||||
|
||||
### 检查工具是否安装
|
||||
|
||||
```bash
|
||||
mysqldump --version
|
||||
mysql --version
|
||||
```
|
||||
|
||||
如果未安装,请根据操作系统安装 MySQL 客户端:
|
||||
|
||||
- **Windows**: 安装 MySQL Community Server
|
||||
- **Linux (Ubuntu/Debian)**: `sudo apt-get install mysql-client`
|
||||
- **Linux (CentOS/RHEL)**: `sudo yum install mysql`
|
||||
- **macOS**: `brew install mysql-client`
|
||||
|
||||
## 配置步骤
|
||||
|
||||
### 1. 修改导出脚本配置
|
||||
|
||||
编辑 `export_database.sh` 脚本顶部配置:
|
||||
|
||||
```bash
|
||||
# 源数据库配置(开发环境)
|
||||
DB_HOST="116.62.17.81" # 数据库地址
|
||||
DB_PORT="3306" # 数据库端口
|
||||
DB_USER="root" # 数据库用户名
|
||||
DB_PASS="Kfcx@1234" # 数据库密码
|
||||
DB_NAME="ccdi" # 数据库名称
|
||||
```
|
||||
|
||||
### 2. 修改导入脚本配置
|
||||
|
||||
编辑 `import_database.sh` 脚本顶部配置:
|
||||
|
||||
**开发环境:**
|
||||
|
||||
```bash
|
||||
DEV_DB_HOST="116.62.17.81" # 开发环境数据库地址
|
||||
DEV_DB_PORT="3306" # 数据库端口
|
||||
DEV_DB_USER="root" # 数据库用户名
|
||||
DEV_DB_PASS="Kfcx@1234" # 数据库密码
|
||||
DEV_DB_NAME="ccdi" # 数据库名称
|
||||
```
|
||||
|
||||
**测试环境:**
|
||||
|
||||
```bash
|
||||
TEST_DB_HOST="your_test_host" # 测试环境数据库地址
|
||||
TEST_DB_PORT="3306" # 数据库端口
|
||||
TEST_DB_USER="your_test_user" # 数据库用户名
|
||||
TEST_DB_PASS="your_test_password" # 数据库密码
|
||||
TEST_DB_NAME="ccdi" # 数据库名称
|
||||
```
|
||||
|
||||
**生产环境:**
|
||||
|
||||
```bash
|
||||
PROD_DB_HOST="your_prod_host" # 生产环境数据库地址
|
||||
PROD_DB_PORT="3306" # 数据库端口
|
||||
PROD_DB_USER="your_prod_user" # 数据库用户名
|
||||
PROD_DB_PASS="your_prod_password" # 数据库密码
|
||||
PROD_DB_NAME="ccdi" # 数据库名称
|
||||
```
|
||||
|
||||
### 3. 验证配置
|
||||
|
||||
查看配置是否正确:
|
||||
|
||||
```bash
|
||||
# 查看导出脚本配置
|
||||
head -20 export_database.sh
|
||||
|
||||
# 查看导入脚本配置
|
||||
head -30 import_database.sh
|
||||
```
|
||||
|
||||
## 数据库导出
|
||||
|
||||
### 执行导出
|
||||
|
||||
```bash
|
||||
# 方式1: 使用默认命令
|
||||
./export_database.sh
|
||||
|
||||
# 方式2: 显式指定命令
|
||||
./export_database.sh export
|
||||
```
|
||||
|
||||
### 预期输出
|
||||
|
||||
```
|
||||
[INFO] ========== 开始导出数据库 ==========
|
||||
[INFO] 配置文件加载成功
|
||||
[INFO] mysqldump 命令检查通过
|
||||
[INFO] 开始导出表结构...
|
||||
[INFO] 表结构导出成功: doc/database/backup/ccdi_structure.sql
|
||||
[INFO] 文件大小: 60K
|
||||
[INFO] 开始导出数据...
|
||||
[INFO] 数据导出成功: doc/database/backup/ccdi_data.sql
|
||||
[INFO] 文件大小: 5.7M
|
||||
[INFO] 验证导出文件...
|
||||
[INFO] 导出文件验证通过
|
||||
[INFO] 表结构文件: doc/database/backup/ccdi_structure.sql (60K)
|
||||
[INFO] 数据文件: doc/database/backup/ccdi_data.sql (5.7M)
|
||||
[INFO] ========== 数据库导出完成 ==========
|
||||
[INFO] 使用 ./import_database.sh <env> 导入到目标环境
|
||||
```
|
||||
|
||||
### 验证导出文件
|
||||
|
||||
**1. 检查文件是否存在**
|
||||
|
||||
```bash
|
||||
ls -lh doc/database/backup/
|
||||
```
|
||||
|
||||
应该看到:
|
||||
|
||||
- `ccdi_structure.sql` - 表结构文件(~60KB)
|
||||
- `ccdi_data.sql` - 数据文件(~5.7MB)
|
||||
|
||||
**2. 检查字符集声明**
|
||||
|
||||
```bash
|
||||
head -20 doc/database/backup/ccdi_structure.sql
|
||||
```
|
||||
|
||||
应该包含:
|
||||
|
||||
```sql
|
||||
SET NAMES utf8mb4;
|
||||
SET CHARACTER SET utf8mb4;
|
||||
```
|
||||
|
||||
**3. 检查文件内容**
|
||||
|
||||
```bash
|
||||
# 查看表数量
|
||||
grep "CREATE TABLE" doc/database/backup/ccdi_structure.sql | wc -l
|
||||
|
||||
# 查看数据量(INSERT 语句数量)
|
||||
grep "INSERT" doc/database/backup/ccdi_data.sql | wc -l
|
||||
```
|
||||
|
||||
## 数据库导入
|
||||
|
||||
### 准备工作
|
||||
|
||||
**1. 确认目标数据库已创建**
|
||||
|
||||
连接到目标数据库服务器:
|
||||
|
||||
```bash
|
||||
mysql -h 目标IP -P 3306 -u 用户名 -p
|
||||
```
|
||||
|
||||
创建数据库(如果不存在):
|
||||
|
||||
```sql
|
||||
CREATE DATABASE ccdi CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
||||
```
|
||||
|
||||
**2. 确认用户权限**
|
||||
|
||||
目标数据库用户需要以下权限:
|
||||
|
||||
- CREATE、ALTER、DROP(创建和修改表)
|
||||
- INSERT、UPDATE、DELETE(数据操作)
|
||||
- INDEX(创建索引)
|
||||
- REFERENCES(外键约束)
|
||||
|
||||
### 导入到测试环境
|
||||
|
||||
```bash
|
||||
./import_database.sh test
|
||||
```
|
||||
|
||||
### 导入到生产环境
|
||||
|
||||
```bash
|
||||
./import_database.sh production
|
||||
```
|
||||
|
||||
或简写:
|
||||
|
||||
```bash
|
||||
./import_database.sh prod
|
||||
```
|
||||
|
||||
### 导入到开发环境
|
||||
|
||||
```bash
|
||||
./import_database.sh dev
|
||||
```
|
||||
|
||||
### 预期输出
|
||||
|
||||
```
|
||||
[INFO] ========== 开始导入数据库到 test 环境 ==========
|
||||
[INFO] 配置文件加载成功
|
||||
[INFO] mysql 命令检查通过
|
||||
[INFO] 检查备份文件...
|
||||
[INFO] 备份文件检查通过
|
||||
[INFO] 表结构文件: doc/database/backup/ccdi_structure.sql (60K)
|
||||
[INFO] 数据文件: doc/database/backup/ccdi_data.sql (5.7M)
|
||||
[INFO] 导入表结构到 test 环境: XXX:3306/ccdi
|
||||
[INFO] 表结构导入成功
|
||||
[INFO] 导入数据到 test 环境: XXX:3306/ccdi
|
||||
[INFO] 数据导入成功
|
||||
[INFO] 验证导入结果...
|
||||
[INFO] 目标数据库表数量: 42
|
||||
[INFO] sys_user 表数据行数: XX
|
||||
[INFO] 数据库字符集: utf8mb4
|
||||
[INFO] ========== 数据库导入完成 ==========
|
||||
```
|
||||
|
||||
## 导入后验证
|
||||
|
||||
### 1. 验证表数量
|
||||
|
||||
连接到目标数据库:
|
||||
|
||||
```bash
|
||||
mysql -h 目标IP -P 3306 -u 用户名 -p ccdi
|
||||
```
|
||||
|
||||
查询表数量:
|
||||
|
||||
```sql
|
||||
SELECT COUNT(*) FROM information_schema.tables
|
||||
WHERE table_schema='ccdi';
|
||||
```
|
||||
|
||||
对比源数据库和目标数据库的表数量是否一致。
|
||||
|
||||
### 2. 验证数据行数
|
||||
|
||||
查询各表数据行数:
|
||||
|
||||
```sql
|
||||
SELECT table_name, table_rows
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema='ccdi'
|
||||
ORDER BY table_rows DESC
|
||||
LIMIT 20;
|
||||
```
|
||||
|
||||
对比源数据库和目标数据库的关键表行数。
|
||||
|
||||
### 3. 验证字符集
|
||||
|
||||
检查数据库字符集:
|
||||
|
||||
```sql
|
||||
SHOW CREATE DATABASE ccdi;
|
||||
```
|
||||
|
||||
应该显示:`DEFAULT CHARACTER SET utf8mb4`
|
||||
|
||||
检查表字符集:
|
||||
|
||||
```sql
|
||||
SHOW CREATE TABLE sys_user;
|
||||
```
|
||||
|
||||
应该显示:`ENGINE=InnoDB DEFAULT CHARSET=utf8mb4`
|
||||
|
||||
### 4. 验证中文数据
|
||||
|
||||
查询包含中文的数据:
|
||||
|
||||
```sql
|
||||
-- 查询用户表
|
||||
SELECT user_name, nick_name FROM sys_user LIMIT 10;
|
||||
|
||||
-- 查询字典数据
|
||||
SELECT dict_label, dict_value FROM sys_dict_data LIMIT 10;
|
||||
|
||||
-- 查询业务表
|
||||
SELECT name, person_type FROM ccdi_biz_intermediary LIMIT 10;
|
||||
```
|
||||
|
||||
确保中文字符显示正常,无乱码。
|
||||
|
||||
### 5. 应用程序连接测试
|
||||
|
||||
修改应用程序配置文件连接到目标数据库,启动应用程序进行功能测试。
|
||||
|
||||
## 完整迁移流程示例
|
||||
|
||||
### 场景:从开发环境迁移到生产环境
|
||||
|
||||
**1. 配置数据库连接**
|
||||
|
||||
```bash
|
||||
# 编辑导出脚本配置(开发环境)
|
||||
nano export_database.sh
|
||||
# 修改脚本顶部的 DB_HOST, DB_USER, DB_PASS 等配置
|
||||
|
||||
# 编辑导入脚本配置(生产环境)
|
||||
nano import_database.sh
|
||||
# 修改脚本顶部的 PROD_DB_HOST, PROD_DB_USER, PROD_DB_PASS 等配置
|
||||
```
|
||||
|
||||
**2. 导出数据库**
|
||||
|
||||
```bash
|
||||
./export_database.sh
|
||||
```
|
||||
|
||||
**3. 验证导出文件**
|
||||
|
||||
```bash
|
||||
ls -lh doc/database/backup/
|
||||
head -20 doc/database/backup/ccdi_structure.sql
|
||||
```
|
||||
|
||||
**4. 先在测试环境验证**
|
||||
|
||||
```bash
|
||||
# 确保已在 import_database.sh 中配置测试环境
|
||||
./import_database.sh test
|
||||
```
|
||||
|
||||
**5. 验证测试环境**
|
||||
|
||||
- 连接测试数据库验证数据
|
||||
- 应用程序连接测试环境进行功能测试
|
||||
|
||||
**6. 导入到生产环境**
|
||||
|
||||
```bash
|
||||
./import_database.sh prod
|
||||
```
|
||||
|
||||
**7. 验证生产环境**
|
||||
|
||||
- 连接生产数据库验证数据
|
||||
- 应用程序连接生产环境进行功能测试
|
||||
|
||||
**8. 完成迁移**
|
||||
|
||||
## 常见问题
|
||||
|
||||
### 1. mysqldump: command not found
|
||||
|
||||
**原因**: MySQL 客户端未安装或未添加到 PATH
|
||||
|
||||
**解决**:
|
||||
|
||||
- 安装 MySQL 客户端工具
|
||||
- 或使用完整路径:`/usr/bin/mysqldump`
|
||||
|
||||
### 2. 数据库连接失败
|
||||
|
||||
**错误信息**: 连接被拒绝或认证失败
|
||||
|
||||
**解决**:
|
||||
|
||||
- 检查脚本顶部的数据库配置是否正确
|
||||
- 使用 mysql 命令手动测试连接
|
||||
- 检查防火墙规则
|
||||
|
||||
### 3. 导入时字符集乱码
|
||||
|
||||
**原因**: 未正确指定字符集
|
||||
|
||||
**解决**:
|
||||
|
||||
- 确保导出文件包含字符集声明
|
||||
- 导入命令添加 `--default-character-set=utf8mb4` 参数
|
||||
- 脚本已自动处理,如仍有问题请检查数据库默认字符集
|
||||
|
||||
### 5. 外键约束失败
|
||||
|
||||
**错误信息**: `ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails`
|
||||
|
||||
**解决**:
|
||||
|
||||
- 脚本已自动添加 `SET FOREIGN_KEY_CHECKS=0;` 和 `SET FOREIGN_KEY_CHECKS=1;`
|
||||
- 如仍有问题,请检查数据完整性
|
||||
|
||||
### 6. 数据包过大
|
||||
|
||||
**错误信息**: `ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes`
|
||||
|
||||
**解决**:
|
||||
|
||||
- 配置文件中的 `MAX_ALLOWED_PACKET=512M` 已处理此问题
|
||||
- 如数据量特别大,可增大此值
|
||||
|
||||
### 7. 权限不足
|
||||
|
||||
**错误信息**: `ERROR 1044 (42000): Access denied for user`
|
||||
|
||||
**解决**:
|
||||
|
||||
- 使用具有足够权限的用户(如 root)
|
||||
- 或授予用户必要权限
|
||||
|
||||
### 8. 备份文件不存在
|
||||
|
||||
**错误信息**: `表结构文件不存在: doc/database/backup/ccdi_structure.sql`
|
||||
|
||||
**解决**:
|
||||
|
||||
- 先执行导出:`./export_database.sh`
|
||||
- 检查 backup 文件夹中是否有 SQL 文件
|
||||
|
||||
## 回滚方案
|
||||
|
||||
如果迁移失败或出现问题:
|
||||
|
||||
1. **保留源数据库**: 不要删除开发环境数据库
|
||||
2. **重新迁移**: 修复问题后重新执行迁移流程
|
||||
3. **从备份恢复**: 如生产环境有备份,可从备份恢复
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **安全性**:
|
||||
- 数据库配置已内置在脚本中,包含敏感信息
|
||||
- 不要将脚本提交到公开的版本控制系统
|
||||
- 迁移完成后建议删除脚本中的密码或使用占位符
|
||||
|
||||
2. **性能**:
|
||||
- 大数据库导出/导入可能需要较长时间
|
||||
- 建议在低峰期执行迁移
|
||||
- 确保有足够的磁盘空间
|
||||
|
||||
3. **数据一致性**:
|
||||
- 导出期间源数据库应避免写入操作
|
||||
- 或使用 `--single-transaction` 参数(已包含)
|
||||
|
||||
4. **字符集**:
|
||||
- 确保所有步骤都使用 utf8mb4 字符集
|
||||
- 验证阶段重点检查中文数据
|
||||
- 表结构文件不再包含显式的 COLLATE 配置(使用默认 utf8mb4_general_ci)
|
||||
|
||||
5. **脚本配置**:
|
||||
- 首次使用前必须在脚本顶部配置数据库信息
|
||||
- 三个环境的配置是独立的,可以只配置需要的环境
|
||||
- 修改配置后无需其他操作即可使用
|
||||
|
||||
## 技术支持
|
||||
|
||||
如遇到问题:
|
||||
|
||||
1. 检查本文档的常见问题部分
|
||||
2. 查看脚本执行的错误信息
|
||||
3. 检查数据库连接和权限
|
||||
4. 查看数据库日志
|
||||
|
||||
## 相关文件
|
||||
|
||||
- 导出脚本: `export_database.sh`(配置已内置)
|
||||
- 导入脚本: `import_database.sh`(配置已内置)
|
||||
- 表结构文件: `doc/database/backup/ccdi_structure.sql`
|
||||
- 数据文件: `doc/database/backup/ccdi_data.sql`
|
||||
- 排序规则修改脚本: `doc/database/alter_collation_to_general_ci.sql`
|
||||
- 设计文档: `docs/plans/2026-02-28-database-migration-design.md`
|
||||
Reference in New Issue
Block a user