# 数据库一键搬家工具
# 一键搬家的优势
1、
官方的web控制台
需要一个一个表导出导入,操作繁琐。而一键搬家
不需要。2、直接用
官方的web控制台
导出的json文件导入腾讯云,会出现24位id和外键搜索查不到的bug。而一键搬家
自动帮你所有24位id增加1位解决此bug。3、不仅支持将
A账号
下的A1空间
搬家到A2空间
,还支持将A账号
下的A1空间
搬家到B账号
下的B1空间
。4、省心、省力、解放双手!
# 一键搬家最重要的优势
如果你用 官方的web控制台
从阿里云空间导出的json文件导入腾讯云空间,你会发现根据 _id
搜索时,有可能无法搜索到数据,那是因为腾讯云不支持阿里云生成的24位 _id
,阿里云生成的24位 _id
导入到腾讯云空间后,会造成无法根据 _id
来查询数据,而 一键搬家
可以帮你完美解决这个棘手问题。
# 效果视频
# 名词定义
1、旧空间:就是你需要搬家的空间。
2、新空间:就是你需要把旧空间搬到这的空间。
# 注意事项
1、请确保
旧空间
和新空间
是可以正常访问的空间。2、
新空间
数据库的数据在导入前会被全部清空
(需要注意空间别选错了,否则后果自负)。3、
旧空间
数据库的数据不会被清空
(也不会被修改)4、请一定要在阿里云环境
相对稳定
的时间段进行搬家(如果当前阿里云出故障
了,不稳定
,则请等阿里云环境稳定了再进行搬家)5、腾讯云的空间会消耗数据库查询、写入次数,以及云函数流量。
6、目前大致耗时 = (你数据量总记录数 / 1000) 秒(即每秒搬1000条数据)(后面会继续优化这个速度)
7、如有问题,可以加Q群:
22466457
进行反馈(关于插件问题必定会得到处理)。
# 插件市场地址
# 操作步骤
- 1、打开【一键搬家】项目根目录
vk.db.config.js
配置文件,修改oldEnv
、newEnv
配置
- 2、生成
db_init.json
如何生成 db_init.json
在 uniCloud控制台
导出 db_init.json
选择只导出首条记录,生成不包含ID(包含也没事)【一键搬家】运行时,会自动清空新空间的数据。(也可以直接从你旧项目中复制 db_init.json
,但需保证旧项目中的 db_init.json
包含了所有表和表索引)
注意:如果生成失败,那就一直试到成功为止,阿里云免费版很坑,有时候要试十几次才生成成功,坚持就是胜利
- 3、把生成的
db_init.json
复制到【一键搬家】项目根目录的uniCloud/database目录下
,然后在项目根目录执行node vk.create-db-config.js
- 4、【一键搬家】项目绑定
旧空间
,并上传云函数vk-db-migration
- 5、【一键搬家】项目切换到
新空间
,在新空间
也上传云函数vk-db-migration
如何切换空间?
右键 uniCloud
目录,点击关联空间,选择需要切换的空间。
如何切换阿里云和腾讯云空间
右键 uniCloud
目录,点击重命名,腾讯云为: uniCloud-tcb
,阿里云为 uniCloud-aliyun
,然后再右键 uniCloud
目录,点击关联空间,选择需要切换的空间。
# 特别注意:如果你购买的是普通授权版(非源码授权版),你可能需为两个空间各购买1次插件。
- 6、切换到
新空间
后,在新空间
初始化你自己数据库的db_init.json
(注意:如果初始化报错,不要急,再初始化一次,直到提示成功或提示没有任何表数据要上传时,则代表成功)
- 7、启动
一键搬家
项目(请使用连接云端云函数)
注意:运行前先确认下,旧空间和新空间没有填错,否则运行时,新空间数据会清空(旧空间数据不会变)
8、启动【一键搬家】项目,访问首页,当看到页面控制台上打印
点击上方【开始一键搬家】按钮可进行一键搬家
时,点击此按钮即可。9、点击【开始一键搬家】按钮
10、如不出意外,等待进度条到100%即可。如果出了意外(比如阿里云数据库不稳定导致连续20次数据库连接失败(目前会自动重试20次),则需要刷新页面并重新点击【开始一键搬家】按钮
11、完成后请将
uniCloud/cloudfunctions/vk-db-migration/vk.db.config.js
的runKey
设置为false,再分别上传到旧空间
和新空间
(这步很关键,防止后面误点导致数据被清空,也可以直接去web控制台删除云函数vk-db-migration
)12、完成。
# 问题
# 如你已付费购买,缺还提示[vk-database-one-click-migration]:不能在当前云服务空间使用
如果使用数据库搬家项目的时候遇到 data undefined
同时提示 [vk-database-one-click-migration]:不能在当前云服务空间使用
则去项目根目录下的 package.json
文件内查看看是否有名为 sn
的属性,把Ta删除后再试试。