Yapi数据库迁移后无法新建的问题解决方案

Yapi数据库迁移后无法新建的问题解决方案

1.场景

在一个新的服务器环境全新安装了yapi后,需要将原有的已经在使用的yapi系统里的数据导入的新装的服务器里。

即将A服务器上mongodb里yapi库的数据迁移到B服务器上的mongodb的yapi库里。

2.问题

迁移后再yapi中执行分组/项目/分类/接口的新建操作时,可能会遇到服务器错误的提示,看服务器端终端日志,原因是数据库主键_id 重复造成的。

3. 原因

  • 由于mongodb 本身没有主键自动递增的机制,它默认只是生成一个随机的objectid
  • 所以 yapi 在程序里自己生成了递增的_id字段,
  • 每次生成新的_id 后,就会把这个值存入IdentityCounter 这个表里,
  • 下次再生成新的_id 时就会以这个表里的count值为基准进行递增。

导入数据的时候,IdentityCounter 这个表的数据没有导入成功,就会造成生成新纪录时的_id 基准值是从1重新开始的,就会和导入的数据的_id重复,继而报错。

4. 解决办法

4.1 重试重新导入IdentityCounter表的数据

如果导入不成功,则尝试下面办法。

4.2 更新IdentityCounter

interface 表为例,先查询到导入后interface表中 _id的最大值的那条记录,记录下这条记录的_id值。

// mongodb->use yapi;
> db.interface.find().sort({_id: -1}).skip(0).limit(1);

将这条id值更新到 IdentityCounter这个表中:

> db.interface.update({_id: $a} ,{$set: {count:  $b}});

其中:

  • $aIdentityCounter 表中 interface 对应的那条记录的_id
  • $b:上面查到的最大id值。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值