我新的PostgreSQL中,当我测试我的插入代码时,我得到以下错误消息PostgreSQL的 - 错误23505重复键值违反唯一约束“foo_column_key”(不是主键)
错误异常(“错误','23505','重复键值违反唯一约束“foo_column_key”');
我曾尝试在cursor.execute()代码后面使用connection.commit()或connection.rollback()。
问题:
我怎么能解决这个错误,而无需重新创建表像命令 “选择SETVAL( 'foo_id_seq',1)”?在我尝试使用“reindex table foo;”之前从postgres但不工作,并运行提交或从psql回滚不工作(也许不同的连接ID)。也搜索谷歌重置所有交易数据或使用搜索关键字我的标题上面,但没有找到任何解决方案。
任何人都可以帮助我或告诉我解决这个问题的方向?
谢谢。
编辑:
对不起,也许这给清楚我的问题:
insert into foo(foo_column) values('[email protected]');
起初我:
create table foo(
foo_id serial unique not null primary key,
foo_column character(35) unique not null
);
我从我的编程代码插入带有此SQL命令数据通过“select * from foo;”检查表中的数据,但没有数据插入。再次我通过刷新页面(cgi应用程序)重新运行代码,并且我得到了该消息,然后我再次检查select * from foo;
,但没有插入任何内容。这是我第一次使用插入事务,在我没有事务的情况下使用mysql之前。
我试图找到解决方案,但总是发现解决方案是列serial/bigserial主键,我好奇,所以我问这里。有没有解决这个错误,而无需重新创建表的任何方法?
希望这可以让你更清楚地了解我的问题和感谢。
ALTER SEQUENCE seq RESTART WITH(SELECT(max(id)+ 1)FROM table); – frt
相关文档:[ALTER SEQUENCE](https://www.postgresql.org/docs/current/static/sql-altersequence.html),[max(id)](https://www.postgresql.org/docs /current/static/functions-aggregate.html) – frt