分类 数据库 下的文章

PostgreSQL踩坑记录 Key (id)=(1) already exists

孤影惆怅

于 2018-01-10 17:44:53 发布

8307
收藏 6
分类专栏: PostgreSQL 文章标签: PostgreSQL
版权

PostgreSQL
专栏收录该内容
3 篇文章0 订阅
订阅专栏
PostgreSQL踩坑记录
在进行数据库记录的迁移和复制数据后容易出现错误

DETAIL: Key (id)=(1) already exists.
1
解决方案:

select setval('tablename_id_seq', max(id)) from tablename;
1

然后修改值

1:项目初始化
@PostConstruct 被注解的方法,在对象加载完依赖注入后执行

@PostConstruct
public void init()
{
    List<SysDictType> dictTypeList = dictTypeMapper.selectDictTypeAll();
    for (SysDictType dictType : dictTypeList)
    {
        List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(dictType.getDictType());
        DictUtils.setDictCache(dictType.getDictType(), dictDatas);
    }
}

2:我们通常会结合数据库来实现数据字典,但事实上数据字典经常会被使用到,如果频繁地去访问数据库,将会对数据库造成性能压力,事实上我们经常会采用Redis对数据字典进行缓存来提升系统性能

String dictTypeTemp="logistics";
List<SysDictData> data = dictTypeService.selectDictDataByType(dictTypeTemp);

3:在SpringBoot中使用Junit进行Redis的链接测试;基于Ruoyi-Vue

package com.test;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisCon {
    @Autowired
    private RedisTemplate redisTemplate;
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    @Test
    public  void setArgs() throws Exception {
        stringRedisTemplate.opsForValue().set("aaa", "111");
        Assert.assertEquals("111", stringRedisTemplate.opsForValue().get("aaa"));
    }
}

项目背景:
很多网站有排行榜的功能,比如:商城中有商品销量的排行榜,游戏网站有玩家获得积分的排行榜。

一般数据的排行我们都知道非常的简单,order by一下就可以了。但是,我们那个系统好巧不巧的是单表就达到了上千万的数量级。而且越来越恶心。


- 阅读剩余部分 -