Обсуждение: Serial column has suddenly stopped working
I have been using a serial column in my most important postgres table for a couple of years. But today it has suddenly started assigning zero instead of the next number, which clearly is causing chaos. I have restarted Postgres, but it has not solved the problem. I cannot re-assign the serial number because it is tied to other tables. Anybody had this problem?? I have reached number 14954 which we can't exactly call a high number. The column description is as follows: Name srl type bigint modifiers default nextval(booking_srl_seq::text) Any help greatly appreciated.
Malcolm Warren wrote:
> I have been using a serial column in my most important postgres table
> for a couple of years.
>
> But today it has suddenly started assigning zero instead of the next
> number, which clearly is causing chaos.
> I have restarted Postgres, but it has not solved the problem. I cannot
> re-assign the serial number because it is tied to other tables.
> Anybody had this problem??
>
> I have reached number 14954 which we can't exactly call a high number.
>
> The column description is as follows:
>
> Name srl
> type bigint
> modifiers default nextval(booking_srl_seq::text)
What happens if you go SELECT nextval('booking_srl_seq') - do you get
the expected number?
--
Richard Huxton
Archonet Ltd
The answer is 3. Mistake of mine. I put in a field of the same name to
display it, and it was also sending 0 with the statement.
Thank you for helping me get to the bottom of it.
Malcolm Warren
Richard Huxton wrote:
> Malcolm Warren wrote:
>
>> Thank you for your reply.
>> Yes, I get the next number and the number goes up one, as it should.
>>
>> The rest of the table seems to function normally incidentally, just
>> the serial column gets filled with 0.
>> By the way my version is 7.3 which I forgot to mention.
>
>
> Hmm - since you say you've dumped/restored to another machine that
> leaves two things I can think of:
>
> 1. Schema issue (maybe it's not seeing the sequence).
> 2. Trigger is altering the value supplied.
> 3. The application isn't sending the query you think it is.
>
> What happens if you manually:
> INSERT INTO my_table (..., srl, ...) VALUES (...,
> nextval('booking_srl_seq',...)
>
> If that works, it's not #2, and it's time to look at the application
> (and turn statement logging on).
>
> --
> Richard Huxton
> Archonet Ltd
>
>