odoo开发笔记-安装模块异常,数据库提示:DETAIL Key(id)=(19) already exists.

场景描述:

    odoo安装模块异常,提示数据库违反唯一约束:

psycopg2.IntegrityError:duplicate key value violates unique constraint "product_category_pkey"  DETAIL Key(id)=(19) already exists.

原因分析:

   违反主键唯一约束,说明在安装该新模块的时候,需要往相应表里创建新数据,插入数据时,相关表的id出现冲突,提示已经id已经存在,这里的表是“商品类目:product_category”表,而表的ID是自动增长的,表里边已经存在手动导入的1万多条数据,那为什么id还是19或者10几,正常来讲应该是现有数据的1万多起步!

    问题出在哪里?

    从日志提示中发现,插入数据时,提示表的product_category_id_seq冲突,也就是创建一条新数据,下一个id并不是现有最大行数10135,也就是需要重置下数据库的自增序列起始值。

 

问题处理:

--- 把当前最大的id做为当前的id自增起始数

语法:

select setval('your_table_id_seq',(select max(id) from 表名));

这里实际执行:

select setval('product_category_id_seq',(select max(id) from product_category));

注意:上边的语句看着是select查询语句,其实它会对数据库记录做修改,所以,执行的时候,要小心。

 

补充:

也可以通过工具: DBeaver,去手动修改,数据库默认自增序列:

 

posted @ 2022-07-27 10:32  hello-Jesson  阅读(435)  评论(0编辑  收藏  举报