Open Aeon opened 7 years ago
I ran into this as well.
The problem is that currval of a sequence id is a a session-local value. It cannot be retrieved unless nextval has been called for the current session.
I fixed this by modifying: /usr/lib/python2.6/dist-packages/trac/db/postgres_backend.py
to call setval, max(id) first to update the sequence value for the session
+++ /usr/lib/python2.6/dist-packages/trac/db/postgres_backend.py
@@ -215,5 +215,6 @@
return _like_escape_re.sub(r'/\1', text)
def get_last_id(self, cursor, table, column='id'):
+ cursor.execute("SELECT SETVAL('%s_%s_seq', max(%s)) FROM %s" % (table, column,column,table))
cursor.execute("SELECT CURRVAL('%s_%s_seq')" % (table, column))
return cursor.fetchone()[0]
On 1-May-2007, at 9:09am, brian wrote (Trac issue 1504):
This line was giving me an error.
psycopg2.ProgrammingError: currval of sequence "ticket_id_seq" is not yet defined in this session
This seems utterly wrong to me since i can select currval('ticket_id_seq') via psql. It's not used so i commented it out.
On a slightly different note, are the sequences in postgresql set correctly after all tickets, comments, stuff are inserted?