我最近遷移數據庫從MySQL向pgsql 9PostgreSQL的設置一張ID寫入
但現在,當我嘗試創建一個新的對象(Django管理),它告訴我,該ID我想使用(從一開始,每次嘗試都增加)已經被使用。
我猜測有一個指針或索引需要設置爲最後使用的ID。我對麼?
我最近遷移數據庫從MySQL向pgsql 9PostgreSQL的設置一張ID寫入
但現在,當我嘗試創建一個新的對象(Django管理),它告訴我,該ID我想使用(從一開始,每次嘗試都增加)已經被使用。
我猜測有一個指針或索引需要設置爲最後使用的ID。我對麼?
當你定義你的表,PostgreSQL的相當於「AUTO_INCREMENT」是:
CREATE TABLE foo (
id SERIAL,
...
);
如果已經創建了表(我懷疑它是),你可以手動添加此:
CREATE SEQUENCE foo_id_seq;
ALTER TABLE foo ALTER COLUMN id SET DEFAULT nextval('foo_id_seq');
請注意,如果你想堅持與PG 會給你使用以下格式爲您的序列名稱默認名稱:
<table name>_<column name>_seq
因此在我的例子中,foo_id_seq
。
已經有一個由django創建的表和序列。所以我不必創建序列並修改表格。但是有效的是:select setval('uploads_id_seq',6965); (上傳表名) – demux
您可以將列的類型設置爲'serial',postgreSQL將自動爲您創建一個序列。 – Johan
我幾乎可以肯定它是由於表由django創建的。 – demux
我在這裏找到了答案:http://stackoverflow.com/questions/1709705/postgresql-nextval-generating-existing-values – demux