它意味着不便插入一排,而無需使用序列或更新id來值2
例如:
t=# create table so47(id serial primary key,v text);
CREATE TABLE
t=# insert into so47(v) select 'some';
INSERT 0 1
t=# insert into so47(id,v) select 2, 'more';
INSERT 0 1
t=# insert into so47(v) select 'some more';
ERROR: duplicate key value violates unique constraint "so47_pkey"
DETAIL: Key (id)=(2) already exists.
回答在評論的問題是: Postgres使用序列爲autoincrement列獲取下一個值。要檢查下一個值,運行(在我的例子情況下):
t=# select * from so47_id_seq ;
sequence_name | last_value | start_value | increment_by | max_value | min_value | cache_value | log_cnt | is_cycled | is_called
---------------+------------+-------------+--------------+---------------------+-----------+-------------+---------+-----------+-----------
so47_id_seq | 2 | 1 | 1 | 9223372036854775807 | 1 | 1 | 31 | f | t
(1 row)
重置NEXTVAL,你必須:
t=# alter sequence so47_id_seq restart with 3;
ALTER SEQUENCE
t=# insert into so47(v) select 'some more';
INSERT 0 1
然後,它會從不存在的價值恢復序列。
在你的情況,你需要:
select max(id)+1 from "user"
得到的值,然後:
alter sequence user_id_seq restart with SELECTED_VALUE;
這意味着不便插入行,而無需使用序列或更新的ID,以值2 –
雅正確..它如何採取2也讓我感到困惑? – lalithkumar
我已經在localhost做了應用程序,並把它推入heroku ..之後,只有它的顯示錯誤.. – lalithkumar