# Postgres and Ruby

**URL:** <https://www.ruby-forum.com/t/postgres-and-ruby/120393>\
**Category:** Rails\
**Created:** [November 16, 2007, 2:32pm UTC](https://www.ruby-forum.com/t/postgres-and-ruby/120393 "2007-11-16T14:32:33Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![blindmen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/50afbb/32.png) [@blindmen](https://www.ruby-forum.com/u/blindmen)\
**Post date:** [November 16, 2007, 2:32pm UTC](https://www.ruby-forum.com/t/postgres-and-ruby/120393/1 "2007-11-16T14:32:33Z")

</div>

Hi I’m very new to Ruby on Rails. I’ve tried to create a very simple  
test application on postgres database. I’ve installed

gem install postgres-pr

driver. My database table name is players. My model file in ruby is  
named player.rb

when I go to

[http://localhost:3000/players/list](http://localhost:3000/players/list)

I can see the list of the table

when I want to add new record

[http://localhost:3000/players/new](http://localhost:3000/players/new)

I’m receiving this error :

RuntimeError: ERROR C55000 Mcurrval of sequence “players\_id\_seq” is  
not yet defined in this session Fsequence.c L639 Rcurrval\_oid: SELECT  
currval(‘players\_id\_seq’)

I know this is error from database. When I tired to do  
SELECT currval(‘players\_id\_seq’) on database i’ve received the same  
error. After nextval (‘playe…’) and than SELECT  
currval(‘players\_id\_seq’) currval returned good value.

I really want to stay on postgres database. Do any1 know what is wrong  
or how to fix this when i want to use ActiveRecord for adding new  
records to the database ?

Many thanks …

btw : editing of the record is working fine too

---

<div class="post-metadata">

**Author:** ![blindmen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/50afbb/32.png) [@blindmen](https://www.ruby-forum.com/u/blindmen)\
**Post date:** [November 16, 2007, 3:55pm UTC](https://www.ruby-forum.com/t/postgres-and-ruby/120393/2 "2007-11-16T15:55:51Z")

</div>

Try this SQL, it might work. It resets the sequence number in a  
table. Can be obviously modified to work on any table with a regular  
unique non-null incrementing primary-key ‘id’

SELECT setval(‘players\_id\_seq’, (SELECT MAX(id) FROM players)+1);

---

<div class="post-metadata">

**Author:** ![blindmen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/50afbb/32.png) [@blindmen](https://www.ruby-forum.com/u/blindmen)\
**Post date:** [November 16, 2007, 5:34pm UTC](https://www.ruby-forum.com/t/postgres-and-ruby/120393/3 "2007-11-16T17:34:54Z")

</div>

Strictly speaking, you not need the “+1”, as nextval() will increment  
it. The “+1” will actually create a hole in the sequence - which of  
course may or may not be if importance to your application.

16 nov 2007 kl. 15.55 skrev fredistic:

---

<div class="post-metadata">

**Author:** ![blindmen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/50afbb/32.png) [@blindmen](https://www.ruby-forum.com/u/blindmen)\
**Post date:** [November 17, 2007, 10:14pm UTC](https://www.ruby-forum.com/t/postgres-and-ruby/120393/4 "2007-11-17T22:14:43Z")

</div>

thanks,

i made it like this.

class PlayersController \< ApplicationController  
scaffold:player

def initialize  
super  
sql = ActiveRecord::Base.connection();  
sql.begin\_db\_transaction  
sql.execute(“SELECT setval(‘players\_id\_seq’, (SELECT MAX(id) FROM  
players));”);  
sql.commit\_db\_transaction  
end

def list  
@players=Player.find\_all  
end

end

if it’s not entirely correct let me know plz.

---

<div class="post-metadata">

**Author:** ![blindmen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/50afbb/32.png) [@blindmen](https://www.ruby-forum.com/u/blindmen)\
**Post date:** [November 27, 2007, 12:19pm UTC](https://www.ruby-forum.com/t/postgres-and-ruby/120393/5 "2007-11-27T12:19:06Z")

</div>

Hi,  
I am new to Ruby on Rails and am trying to run a very simple example  
using also postgres database.  
I also have the problem when trying to add\create.  
My controller is very basic:

class MyuserController \< ApplicationController  
scaffold :myuser  
end

i get the following error:  
RuntimeError: ERROR C42P01 Mrelation “myusers\_id\_seq” does not exist  
Fnamespace.c L200 RRangeVarGetRelid: SELECT currval(‘myusers\_id\_seq’)

Have you found a solution to your problem?  
Regards,  
Jan

On Nov 17, 9:14 pm, Jozef N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![blindmen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/50afbb/32.png) [@blindmen](https://www.ruby-forum.com/u/blindmen)\
**Post date:** [December 17, 2007, 10:43am UTC](https://www.ruby-forum.com/t/postgres-and-ruby/120393/6 "2007-12-17T10:43:01Z")

</div>

Jozef N. wrote:

> have you created an sequencer ?

Indeed. It sounds like the id column is defined as an integer instead of  
a serial.

–  
Roderick van Domburg  
[http://www.nedforce.com](http://www.nedforce.com)

---

<div class="post-metadata">

**Author:** ![blindmen](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/50afbb/32.png) [@blindmen](https://www.ruby-forum.com/u/blindmen)\
**Post date:** [December 16, 2007, 10:17pm UTC](https://www.ruby-forum.com/t/postgres-and-ruby/120393/7 "2007-12-16T22:17:39Z")

</div>

have you created an sequencer ?
