我最近迁移数据库从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