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
I can see the list of the table
when I want to add new record
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
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);
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:
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.
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. [email protected]
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
have you created an sequencer ?