2

我最近在我的 Django 应用程序中从 MySQL 切换到 PostgreSQL,我需要将所有序列的最后一个值设置为 max。对应表和列的数量。如何获取与表相关的所有序列?到目前为止,我正在做类似的事情:

SELECT sequence_name FROM information_schema.sequences 
WHERE sequence_name LIKE 'table_name%';

但我不喜欢这种方法,主要是因为我必须另外清理结果。是否有一些 ID 将表与其序列连接起来。

现在我无法将任何对象添加到我的数据库中,因为 Postgre“自动增量”从 1 开始运行,并且新对象的 PK 与现有记录发生冲突。

注意:我的 django 应用程序非常大,我使用了几个额外的包,所以命名约定不一致(表名有/没有应用程序前缀,PK 列就像 'id' 的 'tableid' 或 'table_id' 和很快)

4

3 回答 3

11

假设您没有做任何不寻常的事情,请尝试以下两个查询。

SELECT * FROM information_schema.sequences ;
SELECT * FROM information_schema.columns WHERE column_default LIKE 'nextval%';

这应该告诉你你需要知道什么。我可能只是将序列名称从column_default字段中删除。

于 2012-11-09T13:56:02.243 回答
2

尝试:

python manage.py sqlsequencereset <appname>

并将其提供给psqlcli

高温高压

于 2012-11-09T13:57:45.690 回答
0

使用它来获取序列名称和计数。

SELECT sequence_name,start_value from information_schema.sequences;
于 2019-05-09T06:43:20.137 回答