Hi Guys,
I''m completely stumped with this one!
I''ve included ActiveRecord::Base.set_sequence_name in my
environment.rb, and
in my user.rb I''ve placed the following code:
class Usertbl < ActiveRecord::Base
set_primary_key "user_id"
set_sequence_name "seq_user_mytable"
validates_uniqueness_of :userpassword, :username, :scope => :user_id
end
From http://localhost:3000/usertbl/new I then attempt to enter a new a
record and receive the following error message:
RuntimeError: ERROR C23502 Mnull value in column "user_id" violates
not-null constraint
FexecMain.c L1795 RExecConstraints: INSERT INTO usertbl
Oh my head hurts!!
--
Regards
Andrew
On 01/03/07, Andrew Madu <
andrewmadu-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:>
> Hi Dave,
> my apologies for contacting you off list but i''m having a spot of
bother
> with postgreSQL sequence setup in rails. In addition to what is mentioned
> below, I have place the following line of code in my
environment.rbdocument:
>
> # Include your application configuration below
> ActiveRecord::Base.pluralize_table_names = false
> ActiveRecord::Base.set_sequence_name
>
> What I am overlooking here?
>
> --
> Regards
>
> Andrew
>
> ---------- Forwarded message ----------
> From: Andrew Madu <
andrewmadu-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> Date: 01-Mar-2007 15:28
> Subject: Re: PostgreSQL primary (sequence) key issue
> To: rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
>
> Hi,
> I''ve followed the example given here:
>
> http://ar.rubyonrails.com/classes/ActiveRecord/Base.html#M000367
>
> and implemented set_sequence_name "seq_name" in my class. When I
try to
> update the user table with a new row from:
>
> http://localhost:3000/usertbl/new
>
> I get the following error message:
>
> RuntimeError: ERROR C23502 Mnull value in column "user_id"
violates not-null constraint
>
>
> FexecMain.c L1795 RExecConstraints: INSERT INTO usertbl
>
>
> What am I overlooking here?
>
> Also coud possibly give me any clues on how to setup an
''assigned'' primary
> key in an ActiveRecord class?
>
> --
> Regards
>
> Andrew
>
> On 01/03/07, Andrew Madu
<andrewmadu-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> >
> > Hi,
> > I have a sequence set up on one of my tables called seq_user_mytable.
I
> > tried the following with no joy:
> >
> > set_primary_key "user_id", :sequence =>
"seq_user_mytable" and:
> >
> > ActiveRecord:: Base.seq_user_mytable
> >
> > again with no joy. How do I implement a sequence in
Rails/ActiveRecord?
> >
> > --
> > Regards
> >
> > Andrew
> >
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Joshua D. Drake
2007-Mar-01 19:23 UTC
Re: PostgreSQL primary (sequence) key issue (Ruby/Rails)
> On 01/03/07, Andrew Madu < andrewmadu@gmail.com> wrote: >> >> Hi Dave, >> my apologies for contacting you off list but i''m having a spot of bother >> with postgreSQL sequence setup in rails. In addition to what is mentioned >> below, I have place the following line of code in myThe definition of primary key explicitly states that it can''t be null. You are trying to pass a null to user_id which won''t work. Joshua D. Drkae>> environment.rbdocument: >> >> # Include your application configuration below >> ActiveRecord::Base.pluralize_table_names = false >> ActiveRecord::Base.set_sequence_name >> >> What I am overlooking here? >> >> -- >> Regards >> >> Andrew >> >> ---------- Forwarded message ---------- >> From: Andrew Madu < andrewmadu@gmail.com> >> Date: 01-Mar-2007 15:28 >> Subject: Re: PostgreSQL primary (sequence) key issue >> To: rubyonrails-talk@googlegroups.com >> >> Hi, >> I''ve followed the example given here: >> >> http://ar.rubyonrails.com/classes/ActiveRecord/Base.html#M000367 >> >> and implemented set_sequence_name "seq_name" in my class. When I try to >> update the user table with a new row from: >> >> http://localhost:3000/usertbl/new >> >> I get the following error message: >> >> RuntimeError: ERROR C23502 Mnull value in column "user_id" >> violates not-null constraint >> >> >> FexecMain.c L1795 RExecConstraints: INSERT INTO usertbl >> >> >> What am I overlooking here? >> >> Also coud possibly give me any clues on how to setup an ''assigned'' >> primary >> key in an ActiveRecord class? >> >> -- >> Regards >> >> Andrew >> >> On 01/03/07, Andrew Madu <andrewmadu@gmail.com> wrote: >> > >> > Hi, >> > I have a sequence set up on one of my tables called seq_user_mytable. I >> > tried the following with no joy: >> > >> > set_primary_key "user_id", :sequence => "seq_user_mytable" and: >> > >> > ActiveRecord:: Base.seq_user_mytable >> > >> > again with no joy. How do I implement a sequence in Rails/ActiveRecord? >> > >> > -- >> > Regards >> > >> > Andrew >> > >> >> >-- === The PostgreSQL Company: Command Prompt, Inc. ==Sales/Support: +1.503.667.4564 || 24x7/Emergency: +1.800.492.2240 Providing the most comprehensive PostgreSQL solutions since 1997 http://www.commandprompt.com/ Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate PostgreSQL Replication: http://www.commandprompt.com/products/ ---------------------------(end of broadcast)--------------------------- TIP 2: Don''t ''kill -9'' the postmaster
Joshua D. Drake wrote:>> On 01/03/07, Andrew Madu < andrewmadu@gmail.com> wrote: >>> Hi Dave, >>> my apologies for contacting you off list but i''m having a spot of bother >>> with postgreSQL sequence setup in rails. In addition to what is mentioned >>> below, I have place the following line of code in my > > The definition of primary key explicitly states that it can''t be null. > You are trying to pass a null to user_id which won''t work. > > Joshua D. Drkae >In MySQL that is traditionally how you tell the RDBMS to use the auto_increment to generate the value. Postgres correctly doesn''t allow that (since you might actually try to set a field to NULL accidentally in which case an error is expected). The portable (and correct) way to do it is to use the DEFAULT keyword like this: INSERT INTO some_table (id_field) VALUES (DEFAULT); I just tested on MySQL 5.0.32 and that syntax works fine. -- Russ. ---------------------------(end of broadcast)--------------------------- TIP 5: don''t forget to increase your free space map settings