Postgresql设置下一个要写入的id

dem*_*mux 5 mysql django postgresql postgresql-9.0

我最近将数据库从mysql迁移到了pgsql 9.

但是现在当我尝试创建一个新对象(在django admin中)时,它告诉我我正在尝试使用的id(从一开始并且每次尝试都增加)已经被使用了.

我猜测有一个指针或索引需要设置为最后使用的id.我对么?

Fli*_*mzy 7

定义表时,相当于'auto_increment'的PostgreSQL是:

CREATE TABLE foo (
    id    SERIAL,
    ...
);
Run Code Online (Sandbox Code Playgroud)

如果您的表已经创建(我怀疑它是),您可以手动添加:

CREATE SEQUENCE foo_id_seq;
ALTER TABLE foo ALTER COLUMN id SET DEFAULT nextval('foo_id_seq');
Run Code Online (Sandbox Code Playgroud)

请注意,如果您想坚持使用Pg提供的默认名称,使用以下格式作为序列名称:

<table name>_<column name>_seq
Run Code Online (Sandbox Code Playgroud)

因此在我的例子中foo_id_seq.