我最近在我的Django应用程序中从MySQL切换到PostgreSQL,我需要在max上设置所有序列的最后一个值。对应的表和列的数量。如何获得与表相关的所有序列?到目前为止,我正在做一些像:
SELECT sequence_name FROM information_schema.sequences
WHERE sequence_name LIKE 'table_name%';
但我不喜欢这种方法,主要是因为我必须另外清理结果。是否有一些ID将表连接到它们的序列。
现在我无法将任何对象添加到我的数据库中,因为Postgre“自动增量”从1开始运行,新对象的PK与现有记录冲突。
注意:我的django应用程序非常大,我使用了几个额外的包,因此命名约定不一致(表名有/不带app pefix,PK列就像'tableid'或'table_id'只是' id'等等)
答案 0 :(得分:9)
假设您没有做任何不寻常的事情,请尝试以下两个查询。
SELECT * FROM information_schema.sequences ;
SELECT * FROM information_schema.columns WHERE column_default LIKE 'nextval%';
那应该告诉你你需要知道什么。我可能只是将序列名称从column_default
字段中删除。
答案 1 :(得分:2)
尝试:
python manage.py sqlsequencereset <appname>
并将其提供给psql
cli
HTH
答案 2 :(得分:0)
使用它来获取序列名称和计数。
SELECT sequence_name,start_value from information_schema.sequences;