3.1.x升级到4.0.x版本

提示

4.0.0.beta版本为不稳定版本,请等到4.0.0正式版发布后再升级。

如果是新安装4.0.0版本,无需参考此文档。直接根据安装引导安装即可。

3.1.x到4.0.x是大型升级,因此数据库表有变动。

升级步骤:

1. 停止蓝眼云盘3.1.x

首先停止蓝眼云盘

2. 备份数据和文件

此次升级会有破坏原来的数据库结构,因此升级前一定要备份原来的数据库。 根目录下的matter文件夹是存放的文件,这个结构不会破坏,可以选择性地备份。

3. 调整数据库schema

只需要执行以下sql语句,当然你也可以根据以下sql语句的语义在自己sql客户端用可视化操作。

  • 新增表

4.0版本新增了两张表,创建他们:

CREATE TABLE `tank40_space` (
  `uuid` char(36) NOT NULL DEFAULT '',
  `sort` bigint(20) NOT NULL,
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `create_time` timestamp NOT NULL DEFAULT '2018-01-01 00:00:00',
  `user_uuid` char(36) DEFAULT NULL,
  `size_limit` bigint(20) DEFAULT NULL,
  `total_size_limit` bigint(20) DEFAULT NULL,
  `total_size` bigint(20) DEFAULT NULL,
  `name` varchar(100) DEFAULT NULL,
  `type` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`uuid`),
  UNIQUE KEY `uuid` (`uuid`),
  KEY `idx_user_uuid` (`user_uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `tank40_space_member` (
  `uuid` char(36) NOT NULL DEFAULT '',
  `sort` bigint(20) NOT NULL,
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `create_time` timestamp NOT NULL DEFAULT '2018-01-01 00:00:00',
  `space_uuid` char(36) DEFAULT NULL,
  `user_uuid` char(36) DEFAULT NULL,
  `space_role` varchar(45) DEFAULT NULL,
  `role` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`uuid`),
  UNIQUE KEY `uuid` (`uuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  • 修改表名

接着是需要将表名前缀从 tank31_ 修改成 tank40_


ALTER TABLE `tank31_bridge` RENAME TO  `tank40_bridge` ;
ALTER TABLE `tank31_dashboard` RENAME TO  `tank40_dashboard` ;
ALTER TABLE `tank31_download_token` RENAME TO  `tank40_download_token` ;
ALTER TABLE `tank31_footprint` RENAME TO  `tank40_footprint` ;
ALTER TABLE `tank31_image_cache` RENAME TO  `tank40_image_cache` ;
ALTER TABLE `tank31_matter` RENAME TO  `tank40_matter` ;
ALTER TABLE `tank31_preference` RENAME TO  `tank40_preference` ;
ALTER TABLE `tank31_session` RENAME TO  `tank40_session` ;
ALTER TABLE `tank31_share` RENAME TO  `tank40_share` ;
ALTER TABLE `tank31_upload_token` RENAME TO  `tank40_upload_token` ;
ALTER TABLE `tank31_user` RENAME TO  `tank40_user` ;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
  • 调整字段

然后是 tank40_matter 表中新增了space_uuid字段,字段username替换成space_name; tank40_share表中新增了space_uuid字段;tank40_user表中新增了space_uuid字段;

ALTER TABLE `tank40_matter` ADD COLUMN `space_uuid` CHAR(36) NULL;
ALTER TABLE `tank40_matter` CHANGE username space_name VARCHAR(45) NULL;
ALTER TABLE `tank40_share` ADD COLUMN `space_uuid` CHAR(36) NULL;
ALTER TABLE `tank40_user` ADD COLUMN `space_uuid` CHAR(36) NULL;
1
2
3
4
  • 调整数据

4.0版本新增了空间的概念,以前的用户所有文件就变成了个人空间。

-- 为每个用户创建一个私人空间。
INSERT INTO `tank40_space`
SELECT
UUID() AS uuid,
sort AS sort,
update_time AS update_time,
create_time AS create_time,
uuid AS user_uuid,
size_limit AS size_limit,
total_size_limit AS total_size_limit,
total_size AS total_size,
username AS name,
'PRIVATE' AS type
FROM `tank40_user`;

-- 设置user表中的space_uuid
UPDATE `tank40_user` t1 INNER JOIN `tank40_space` t2 ON t1.uuid = t2.user_uuid
SET t1.space_uuid = t2.uuid
WHERE t1.uuid > '';

-- 设置matter表中的space_uuid
UPDATE `tank40_matter` t1 INNER JOIN `tank40_user` t2 ON t1.user_uuid = t2.uuid
SET t1.space_uuid = t2.space_uuid
WHERE t1.uuid > '';

-- 设置share表中的space_uuid
UPDATE `tank40_share` t1 INNER JOIN `tank40_user` t2 ON t1.user_uuid = t2.uuid
SET t1.space_uuid = t2.space_uuid
WHERE t1.uuid > '';
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

4. 替换文件

仅仅保留蓝眼云盘的matter文件夹,其余文件(夹)conf,html,tank4.0.x安装包中的替换。 因为数据库中记录了文件元信息,matter文件中保留了物理文件,因此只要保证这两处的数据即可。

5. 启动蓝眼

启动蓝眼,应该会进入到安装引导界面了,安装完成了之后,3.1.x的文件依旧会保留。

上次更新: 2023/7/22 下午7:49:08