good evening (and morning, also!) everyone. this is my first attempt at using sqlite3 for a rails app, and so far, not so good when I try to save a very basic record from the controller, it gives me back an ActiveRecord::StatementInvalid error. "that doesn''t sound very nice" so I switched the app to mysql and sure enough, it went through without a hitch. unsatisfied, I switched back to sqlite3 and fired up the console mike@lua:~/Rails/hotspots$ ./script/console Loading development environment. >> spot = Hotspot.new :title => "testing", :address => "222 water st" => #<Hotspot:0xb732af48 @attributes={"title"=>"testing", "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", "address"=>"222 water st", "long"=>"NULL"}, @new_record=true> >> spot.save => true >> "???" and here''s the source, right from the controller''s mouth: def create if session[:user] spot = Hotspot.new :title => "testing", :address => "222 water st" spot.save end end and here''s what that gives me: Processing ApiController#create (for 127.0.0.1 at 2007-05-09 23:30:52) [POST] Session ID: b859a7e645f2c60ddd4747368a677b04 Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", "controller"=>"api", "address"=>"asdf", "lat"=>"47.54501765940571", "long"=>"-52.7204704284668"} User Load (0.000560) SELECT * FROM users WHERE (login = ''mikew'' and password = ''test'') LIMIT 1 SQL (0.000000) SQLite3::SQLException: SQL logic error or missing database: INSERT INTO hotspots ("title", "notes", "user_id", "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 water st'', ''NULL'', ''NULL'') ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error or missing database: INSERT INTO hotspots ("title", "notes", "user_id", "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 water st'', ''NULL'', ''NULL'')) now I can''t make any sense of what''s going on --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Have you checked your database.yml file? I suspect it might not be set up properly. The relevant section of database.yml should look like: adapter: sqlite3 dbfile: db/development.db Note that SQLite uses "dbfile" rather than "database" to point to the database, and "dbfile" points to the actual file in the filesystem. There''s no "username" or "password" fields, since these aren''t used by SQLite. For what it''s worth, once you get these sort of issues sorted out with SQLite, I''ve found it''s an extremely robust solution for small Rails sites. Regards Dave M. On 10/05/07, mikew <wyatt.mike-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > good evening (and morning, also!) everyone. this is my first attempt > at using sqlite3 for a rails app, and so far, not so good > > when I try to save a very basic record from the controller, it gives > me back an ActiveRecord::StatementInvalid error. > > "that doesn''t sound very nice" > > so I switched the app to mysql and sure enough, it went through > without a hitch. unsatisfied, I switched back to sqlite3 and fired up > the console > > mike@lua:~/Rails/hotspots$ ./script/console > Loading development environment. > >> spot = Hotspot.new :title => "testing", :address => "222 water > st" > => #<Hotspot:0xb732af48 @attributes={"title"=>"testing", > "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", "address"=>"222 water > st", "long"=>"NULL"}, @new_record=true> > >> spot.save > => true > >> > > "???" > > and here''s the source, right from the controller''s mouth: > > def create > if session[:user] > spot = Hotspot.new :title => "testing", :address => "222 water st" > spot.save > end > end > > and here''s what that gives me: > > Processing ApiController#create (for 127.0.0.1 at 2007-05-09 23:30:52) > [POST] > Session ID: b859a7e645f2c60ddd4747368a677b04 > Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", > "controller"=>"api", "address"=>"asdf", "lat"=>"47.54501765940571", > "long"=>"-52.7204704284668"} > User Load (0.000560) SELECT * FROM users WHERE (login = ''mikew'' > and password = ''test'') LIMIT 1 > SQL (0.000000) SQLite3::SQLException: SQL logic error or missing > database: INSERT INTO hotspots ("title", "notes", "user_id", > "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 water st'', > ''NULL'', ''NULL'') > > > ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error > or missing database: INSERT INTO hotspots ("title", "notes", > "user_id", "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 > water st'', ''NULL'', ''NULL'')) > > now I can''t make any sense of what''s going on > > > > >--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
the rails app was generated with `rails appname --database=sqlite3`, so it created the database and setup the database config for me. you can see that right above the troublesome query, it even loads data from the user table. the schema is all controlled by db:migrate as well, so the MySQL and SQLite databases are identical here is my database.yml file though: mike@lua:~/Rails/hotspots$ cat config/database.yml # SQLite version 3.x # gem install sqlite3-ruby development: adapter: sqlite3 database: db/development.sqlite3 timeout: 5000 # Warning: The database defined as ''test'' will be erased and # re-generated from your development database when you run ''rake''. # Do not set this db to the same as development or production. test: adapter: sqlite3 database: db/test.sqlite3 timeout: 5000 production: adapter: sqlite3 database: db/production.sqlite3 timeout: 5000 On May 10, 5:22 am, "David Mitchell" <monch1...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Have you checked your database.yml file? I suspect it might not be > set up properly. > > The relevant section of database.yml should look like: > adapter: sqlite3 > dbfile: db/development.db > > Note that SQLite uses "dbfile" rather than "database" to point to the > database, and "dbfile" points to the actual file in the filesystem. > There''s no "username" or "password" fields, since these aren''t used by > SQLite. > > For what it''s worth, once you get these sort of issues sorted out with > SQLite, I''ve found it''s an extremely robust solution for small Rails > sites. > > Regards > > Dave M. > > On 10/05/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > good evening (and morning, also!) everyone. this is my first attempt > > at using sqlite3 for a rails app, and so far, not so good > > > when I try to save a very basic record from the controller, it gives > > me back an ActiveRecord::StatementInvalid error. > > > "that doesn''t sound very nice" > > > so I switched the app to mysql and sure enough, it went through > > without a hitch. unsatisfied, I switched back to sqlite3 and fired up > > the console > > > mike@lua:~/Rails/hotspots$ ./script/console > > Loading development environment. > > >> spot = Hotspot.new :title => "testing", :address => "222 water > > st" > > => #<Hotspot:0xb732af48 @attributes={"title"=>"testing", > > "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", "address"=>"222 water > > st", "long"=>"NULL"}, @new_record=true> > > >> spot.save > > => true > > > "???" > > > and here''s the source, right from the controller''s mouth: > > > def create > > if session[:user] > > spot = Hotspot.new :title => "testing", :address => "222 water st" > > spot.save > > end > > end > > > and here''s what that gives me: > > > Processing ApiController#create (for 127.0.0.1 at 2007-05-09 23:30:52) > > [POST] > > Session ID: b859a7e645f2c60ddd4747368a677b04 > > Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", > > "controller"=>"api", "address"=>"asdf", "lat"=>"47.54501765940571", > > "long"=>"-52.7204704284668"} > > User Load (0.000560) SELECT * FROM users WHERE (login = ''mikew'' > > and password = ''test'') LIMIT 1 > > SQL (0.000000) SQLite3::SQLException: SQL logic error or missing > > database: INSERT INTO hotspots ("title", "notes", "user_id", > > "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 water st'', > > ''NULL'', ''NULL'') > > > ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error > > or missing database: INSERT INTO hotspots ("title", "notes", > > "user_id", "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 > > water st'', ''NULL'', ''NULL'')) > > > now I can''t make any sense of what''s going on--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
my guess is that the ''NULL'' values are the clues. null values in the database should come back as nil in rails ex:>> u = User.find(2)=> #<User:0xb740fd54 @attributes={"created_on"=>"2007-04-30 06:34:09", "last_login"=>nil, "name"=>"Bob Jones", "login_flag"=>"0", "updated_on"=>"2007-04-30 06:34:09", "active_flag"=>"1", "id"=>"2", "admin_flag"=>"1", "station"=>nil, "login"=>"bjones"}> my guess is that you are storing the actual string NULL in the database somehow when you shouldn''t be and mysql is being forgiving about it whereas sqlite3 is not. look in your model or your migrations for where you might be setting default values incorrectly. other than that, nothing else jumps out as being strange or wrong. On 5/9/07, mikew <wyatt.mike-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > good evening (and morning, also!) everyone. this is my first attempt > at using sqlite3 for a rails app, and so far, not so good > > when I try to save a very basic record from the controller, it gives > me back an ActiveRecord::StatementInvalid error. > > "that doesn''t sound very nice" > > so I switched the app to mysql and sure enough, it went through > without a hitch. unsatisfied, I switched back to sqlite3 and fired up > the console > > mike@lua:~/Rails/hotspots$ ./script/console > Loading development environment. > >> spot = Hotspot.new :title => "testing", :address => "222 water > st" > => #<Hotspot:0xb732af48 @attributes={"title"=>"testing", > "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", "address"=>"222 water > st", "long"=>"NULL"}, @new_record=true> > >> spot.save > => true > >> > > "???" > > and here''s the source, right from the controller''s mouth: > > def create > if session[:user] > spot = Hotspot.new :title => "testing", :address => "222 water st" > spot.save > end > end > > and here''s what that gives me: > > Processing ApiController#create (for 127.0.0.1 at 2007-05-09 23:30:52) > [POST] > Session ID: b859a7e645f2c60ddd4747368a677b04 > Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", > "controller"=>"api", "address"=>"asdf", "lat"=>"47.54501765940571", > "long"=>"-52.7204704284668"} > User Load (0.000560) SELECT * FROM users WHERE (login = ''mikew'' > and password = ''test'') LIMIT 1 > SQL (0.000000) SQLite3::SQLException: SQL logic error or missing > database: INSERT INTO hotspots ("title", "notes", "user_id", > "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 water st'', > ''NULL'', ''NULL'') > > > ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error > or missing database: INSERT INTO hotspots ("title", "notes", > "user_id", "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 > water st'', ''NULL'', ''NULL'')) > > now I can''t make any sense of what''s going on > > > > >--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
oh, when I do fetch the record in the console, those null values come back as nil for ruby what I don''t understand is how the same code can be used in the console and the controller and work in one and not the other the models are blank except for the has_many/belongs_to/habtm relationships. and the migrations don''t set any default values On May 10, 8:53 am, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> my guess is that the ''NULL'' values are the clues. > > null values in the database should come back as nil in rails > > ex: > > >> u = User.find(2) > > => #<User:0xb740fd54 @attributes={"created_on"=>"2007-04-30 06:34:09", > "last_login"=>nil, "name"=>"Bob Jones", "login_flag"=>"0", > "updated_on"=>"2007-04-30 06:34:09", "active_flag"=>"1", "id"=>"2", > "admin_flag"=>"1", "station"=>nil, "login"=>"bjones"}> > > my guess is that you are storing the actual string NULL in the > database somehow when you shouldn''t be and mysql is being forgiving > about it whereas sqlite3 is not. > > look in your model or your migrations for where you might be setting > default values incorrectly. > > other than that, nothing else jumps out as being strange or wrong. > > On 5/9/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > good evening (and morning, also!) everyone. this is my first attempt > > at using sqlite3 for a rails app, and so far, not so good > > > when I try to save a very basic record from the controller, it gives > > me back an ActiveRecord::StatementInvalid error. > > > "that doesn''t sound very nice" > > > so I switched the app to mysql and sure enough, it went through > > without a hitch. unsatisfied, I switched back to sqlite3 and fired up > > the console > > > mike@lua:~/Rails/hotspots$ ./script/console > > Loading development environment. > > >> spot = Hotspot.new :title => "testing", :address => "222 water > > st" > > => #<Hotspot:0xb732af48 @attributes={"title"=>"testing", > > "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", "address"=>"222 water > > st", "long"=>"NULL"}, @new_record=true> > > >> spot.save > > => true > > > "???" > > > and here''s the source, right from the controller''s mouth: > > > def create > > if session[:user] > > spot = Hotspot.new :title => "testing", :address => "222 water st" > > spot.save > > end > > end > > > and here''s what that gives me: > > > Processing ApiController#create (for 127.0.0.1 at 2007-05-09 23:30:52) > > [POST] > > Session ID: b859a7e645f2c60ddd4747368a677b04 > > Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", > > "controller"=>"api", "address"=>"asdf", "lat"=>"47.54501765940571", > > "long"=>"-52.7204704284668"} > > User Load (0.000560) SELECT * FROM users WHERE (login = ''mikew'' > > and password = ''test'') LIMIT 1 > > SQL (0.000000) SQLite3::SQLException: SQL logic error or missing > > database: INSERT INTO hotspots ("title", "notes", "user_id", > > "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 water st'', > > ''NULL'', ''NULL'') > > > ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error > > or missing database: INSERT INTO hotspots ("title", "notes", > > "user_id", "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 > > water st'', ''NULL'', ''NULL'')) > > > now I can''t make any sense of what''s going on--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
On 5/11/07, mikew <wyatt.mike-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> oh, when I do fetch the record in the console, those null values come > back as nil for ruby > what I don''t understand is how the same code can be used in the > console and the controller and work in one and not the otherDo you know which version of sqlite3 you''re using? This might help: http://weblog.rubyonrails.org/2007/1/29/using-sqlite3-with-rails d. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
well, something is causing the empty attributes to be set to "NULL" instead of nil. here''s some data i have in an sqlite3 db sqlite> select * from topics where parent_id IS NULL limit 1; id name url_name parent_id ---------- ---------- ---------- ---------- 1 Technology technology script/console>> t = Topic.find(1)=> #<Topic:0x382ce10 @attributes={"name"=>"Technology", "id"=>"1", "url_name"=>"technology", "parent_id"=>nil}>>> t = Topic.new :name => "Foo", :url_name => "foo"=> #<Topic:0x382910c @new_record=true, @attributes={"name"=>"Foo", "parent_id"=>nil, "url_name"=>"foo"}> another thing you might try is to go into the sqlite3 console and check out the schema for the table $>sqlite3 db/development_db sqlite> .schema <table_name> and see what the default is let us know what you find out On 5/10/07, mikew <wyatt.mike-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > oh, when I do fetch the record in the console, those null values come > back as nil for ruby > > what I don''t understand is how the same code can be used in the > console and the controller and work in one and not the other > > the models are blank except for the has_many/belongs_to/habtm > relationships. and the migrations don''t set any default values > > On May 10, 8:53 am, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > my guess is that the ''NULL'' values are the clues. > > > > null values in the database should come back as nil in rails > > > > ex: > > > > >> u = User.find(2) > > > > => #<User:0xb740fd54 @attributes={"created_on"=>"2007-04-30 06:34:09", > > "last_login"=>nil, "name"=>"Bob Jones", "login_flag"=>"0", > > "updated_on"=>"2007-04-30 06:34:09", "active_flag"=>"1", "id"=>"2", > > "admin_flag"=>"1", "station"=>nil, "login"=>"bjones"}> > > > > my guess is that you are storing the actual string NULL in the > > database somehow when you shouldn''t be and mysql is being forgiving > > about it whereas sqlite3 is not. > > > > look in your model or your migrations for where you might be setting > > default values incorrectly. > > > > other than that, nothing else jumps out as being strange or wrong. > > > > On 5/9/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > > > good evening (and morning, also!) everyone. this is my first attempt > > > at using sqlite3 for a rails app, and so far, not so good > > > > > when I try to save a very basic record from the controller, it gives > > > me back an ActiveRecord::StatementInvalid error. > > > > > "that doesn''t sound very nice" > > > > > so I switched the app to mysql and sure enough, it went through > > > without a hitch. unsatisfied, I switched back to sqlite3 and fired up > > > the console > > > > > mike@lua:~/Rails/hotspots$ ./script/console > > > Loading development environment. > > > >> spot = Hotspot.new :title => "testing", :address => "222 water > > > st" > > > => #<Hotspot:0xb732af48 @attributes={"title"=>"testing", > > > "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", "address"=>"222 water > > > st", "long"=>"NULL"}, @new_record=true> > > > >> spot.save > > > => true > > > > > "???" > > > > > and here''s the source, right from the controller''s mouth: > > > > > def create > > > if session[:user] > > > spot = Hotspot.new :title => "testing", :address => "222 water st" > > > spot.save > > > end > > > end > > > > > and here''s what that gives me: > > > > > Processing ApiController#create (for 127.0.0.1 at 2007-05-09 23:30:52) > > > [POST] > > > Session ID: b859a7e645f2c60ddd4747368a677b04 > > > Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", > > > "controller"=>"api", "address"=>"asdf", "lat"=>"47.54501765940571", > > > "long"=>"-52.7204704284668"} > > > User Load (0.000560) SELECT * FROM users WHERE (login = ''mikew'' > > > and password = ''test'') LIMIT 1 > > > SQL (0.000000) SQLite3::SQLException: SQL logic error or missing > > > database: INSERT INTO hotspots ("title", "notes", "user_id", > > > "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 water st'', > > > ''NULL'', ''NULL'') > > > > > ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error > > > or missing database: INSERT INTO hotspots ("title", "notes", > > > "user_id", "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 > > > water st'', ''NULL'', ''NULL'')) > > > > > now I can''t make any sense of what''s going on > > > > >--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
oh sorry chris, you were right. I thought I saw it returning ''nil'' values, but it turns out it sets and returns NULL values $ ./script/console Loading development environment.>> spot = Hotspot.new :title => "test", :address => "2 signal hill rd"=> #<Hotspot:0xb73ebea0 @attributes={"created_on"=>nil, "title"=>"test", "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", "address"=>"2 signal hill rd", "long"=>"NULL"}, @new_record=true>>> spot.save=> true>> Hotspot.find :first=> #<Hotspot:0xb7364e28 @attributes={"created_on"=>"2007-05-11 11:43:13", "title"=>"test", "id"=>"1", "notes"=>"NULL", "user_id"=>"0", "address"=>"2 signal hill rd", "lat"=>"NULL", "long"=>"NULL"}>>>here''s the schema: $ sqlite3 db/development.sqlite3 SQLite version 3.3.13 Enter ".help" for instructions sqlite> .schema hotspots CREATE TABLE hotspots ("id" INTEGER PRIMARY KEY NOT NULL, "title" varchar(255) DEFAULT NULL, "address" varchar(255) DEFAULT NULL, "notes" varchar(255) DEFAULT NULL, "user_id" integer DEFAULT NULL, "lat" varchar(255) DEFAULT NULL, "long" varchar(255) DEFAULT NULL, "created_on" datetime DEFAULT NULL); sqlite> as you can see I''m using sqlite 3.3.13. that''s no biggie though, I''ll try manually compiling 3.3.7 and the qslite3-ruby gem and see if that works out On May 10, 9:34 pm, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> well, something is causing the empty attributes to be set to "NULL" > instead of nil. > > here''s some data i have in an sqlite3 db > > sqlite> select * from topics where parent_id IS NULL limit 1; > id name url_name parent_id > ---------- ---------- ---------- ---------- > 1 Technology technology > > script/console>> t = Topic.find(1) > > => #<Topic:0x382ce10 @attributes={"name"=>"Technology", "id"=>"1", > "url_name"=>"technology", "parent_id"=>nil}> > > >> t = Topic.new :name => "Foo", :url_name => "foo" > > => #<Topic:0x382910c @new_record=true, @attributes={"name"=>"Foo", > "parent_id"=>nil, "url_name"=>"foo"}> > > another thing you might try is to go into the sqlite3 console and > check out the schema for the table > $>sqlite3 db/development_db > sqlite> .schema <table_name> > > and see what the default is > > let us know what you find out > > On 5/10/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > oh, when I do fetch the record in the console, those null values come > > back as nil for ruby > > > what I don''t understand is how the same code can be used in the > > console and the controller and work in one and not the other > > > the models are blank except for the has_many/belongs_to/habtm > > relationships. and the migrations don''t set any default values > > > On May 10, 8:53 am, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > my guess is that the ''NULL'' values are the clues. > > > > null values in the database should come back as nil in rails > > > > ex: > > > > >> u = User.find(2) > > > > => #<User:0xb740fd54 @attributes={"created_on"=>"2007-04-30 06:34:09", > > > "last_login"=>nil, "name"=>"Bob Jones", "login_flag"=>"0", > > > "updated_on"=>"2007-04-30 06:34:09", "active_flag"=>"1", "id"=>"2", > > > "admin_flag"=>"1", "station"=>nil, "login"=>"bjones"}> > > > > my guess is that you are storing the actual string NULL in the > > > database somehow when you shouldn''t be and mysql is being forgiving > > > about it whereas sqlite3 is not. > > > > look in your model or your migrations for where you might be setting > > > default values incorrectly. > > > > other than that, nothing else jumps out as being strange or wrong. > > > > On 5/9/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > good evening (and morning, also!) everyone. this is my first attempt > > > > at using sqlite3 for a rails app, and so far, not so good > > > > > when I try to save a very basic record from the controller, it gives > > > > me back an ActiveRecord::StatementInvalid error. > > > > > "that doesn''t sound very nice" > > > > > so I switched the app to mysql and sure enough, it went through > > > > without a hitch. unsatisfied, I switched back to sqlite3 and fired up > > > > the console > > > > > mike@lua:~/Rails/hotspots$ ./script/console > > > > Loading development environment. > > > > >> spot = Hotspot.new :title => "testing", :address => "222 water > > > > st" > > > > => #<Hotspot:0xb732af48 @attributes={"title"=>"testing", > > > > "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", "address"=>"222 water > > > > st", "long"=>"NULL"}, @new_record=true> > > > > >> spot.save > > > > => true > > > > > "???" > > > > > and here''s the source, right from the controller''s mouth: > > > > > def create > > > > if session[:user] > > > > spot = Hotspot.new :title => "testing", :address => "222 water st" > > > > spot.save > > > > end > > > > end > > > > > and here''s what that gives me: > > > > > Processing ApiController#create (for 127.0.0.1 at 2007-05-09 23:30:52) > > > > [POST] > > > > Session ID: b859a7e645f2c60ddd4747368a677b04 > > > > Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", > > > > "controller"=>"api", "address"=>"asdf", "lat"=>"47.54501765940571", > > > > "long"=>"-52.7204704284668"} > > > > User Load (0.000560) SELECT * FROM users WHERE (login = ''mikew'' > > > > and password = ''test'') LIMIT 1 > > > > SQL (0.000000) SQLite3::SQLException: SQL logic error or missing > > > > database: INSERT INTO hotspots ("title", "notes", "user_id", > > > > "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 water st'', > > > > ''NULL'', ''NULL'') > > > > > ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error > > > > or missing database: INSERT INTO hotspots ("title", "notes", > > > > "user_id", "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 > > > > water st'', ''NULL'', ''NULL'')) > > > > > now I can''t make any sense of what''s going on--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
after installing sqlite3 3.3.7 and reinstalling sqlite3-ruby there''s still no change. I still get that big error in the controller and NULL values in the console also, this is interesting. here is the migration used to create the table: $ cat db/migrate/001_create_hotspots.rb class CreateHotspots < ActiveRecord::Migration def self.up create_table :hotspots do |t| t.column :title, :string t.column :address, :string t.column :notes, :string t.column :user_id, :integer t.column :lat, :string t.column :long, :string t.column :created_on, :datetime end end def self.down drop_table :hotspots end end yet here''s the schema.rb in the end $ cat db/schema.rb # This file is autogenerated. Instead of editing this file, please use the # migrations feature of ActiveRecord to incrementally modify your database, and # then regenerate this schema definition. ActiveRecord::Schema.define(:version => 4) do ... create_table "hotspots", :force => true do |t| t.column "title", :string, :default => "NULL" t.column "address", :string, :default => "NULL" t.column "notes", :string, :default => "NULL" t.column "user_id", :integer, :default => 0 t.column "lat", :string, :default => "NULL" t.column "long", :string, :default => "NULL" t.column "created_on", :datetime end ... end On May 11, 12:14 pm, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> oh sorry chris, you were right. I thought I saw it returning ''nil'' > values, but it turns out it sets and returns NULL values > > $ ./script/console > Loading development environment.>> spot = Hotspot.new :title => "test", :address => "2 signal hill rd" > > => #<Hotspot:0xb73ebea0 @attributes={"created_on"=>nil, > "title"=>"test", "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", > "address"=>"2 signal hill rd", "long"=>"NULL"}, @new_record=true>>> spot.save > => true > >> Hotspot.find :first > > => #<Hotspot:0xb7364e28 @attributes={"created_on"=>"2007-05-11 > 11:43:13", "title"=>"test", "id"=>"1", "notes"=>"NULL", > "user_id"=>"0", "address"=>"2 signal hill rd", "lat"=>"NULL", > "long"=>"NULL"}> > > > > here''s the schema: > > $ sqlite3 db/development.sqlite3 > SQLite version 3.3.13 > Enter ".help" for instructions > sqlite> .schema hotspots > CREATE TABLE hotspots ("id" INTEGER PRIMARY KEY NOT NULL, "title" > varchar(255) DEFAULT NULL, "address" varchar(255) DEFAULT NULL, > "notes" varchar(255) DEFAULT NULL, "user_id" integer DEFAULT NULL, > "lat" varchar(255) DEFAULT NULL, "long" varchar(255) DEFAULT NULL, > "created_on" datetime DEFAULT NULL); > sqlite> > > as you can see I''m using sqlite 3.3.13. that''s no biggie though, I''ll > try manually compiling 3.3.7 and the qslite3-ruby gem and see if that > works out > > On May 10, 9:34 pm, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > well, something is causing the empty attributes to be set to "NULL" > > instead of nil. > > > here''s some data i have in an sqlite3 db > > > sqlite> select * from topics where parent_id IS NULL limit 1; > > id name url_name parent_id > > ---------- ---------- ---------- ---------- > > 1 Technology technology > > > script/console>> t = Topic.find(1) > > > => #<Topic:0x382ce10 @attributes={"name"=>"Technology", "id"=>"1", > > "url_name"=>"technology", "parent_id"=>nil}> > > > >> t = Topic.new :name => "Foo", :url_name => "foo" > > > => #<Topic:0x382910c @new_record=true, @attributes={"name"=>"Foo", > > "parent_id"=>nil, "url_name"=>"foo"}> > > > another thing you might try is to go into the sqlite3 console and > > check out the schema for the table > > $>sqlite3 db/development_db > > sqlite> .schema <table_name> > > > and see what the default is > > > let us know what you find out > > > On 5/10/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > oh, when I do fetch the record in the console, those null values come > > > back as nil for ruby > > > > what I don''t understand is how the same code can be used in the > > > console and the controller and work in one and not the other > > > > the models are blank except for the has_many/belongs_to/habtm > > > relationships. and the migrations don''t set any default values > > > > On May 10, 8:53 am, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > my guess is that the ''NULL'' values are the clues. > > > > > null values in the database should come back as nil in rails > > > > > ex: > > > > > >> u = User.find(2) > > > > > => #<User:0xb740fd54 @attributes={"created_on"=>"2007-04-30 06:34:09", > > > > "last_login"=>nil, "name"=>"Bob Jones", "login_flag"=>"0", > > > > "updated_on"=>"2007-04-30 06:34:09", "active_flag"=>"1", "id"=>"2", > > > > "admin_flag"=>"1", "station"=>nil, "login"=>"bjones"}> > > > > > my guess is that you are storing the actual string NULL in the > > > > database somehow when you shouldn''t be and mysql is being forgiving > > > > about it whereas sqlite3 is not. > > > > > look in your model or your migrations for where you might be setting > > > > default values incorrectly. > > > > > other than that, nothing else jumps out as being strange or wrong. > > > > > On 5/9/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > good evening (and morning, also!) everyone. this is my first attempt > > > > > at using sqlite3 for a rails app, and so far, not so good > > > > > > when I try to save a very basic record from the controller, it gives > > > > > me back an ActiveRecord::StatementInvalid error. > > > > > > "that doesn''t sound very nice" > > > > > > so I switched the app to mysql and sure enough, it went through > > > > > without a hitch. unsatisfied, I switched back to sqlite3 and fired up > > > > > the console > > > > > > mike@lua:~/Rails/hotspots$ ./script/console > > > > > Loading development environment. > > > > > >> spot = Hotspot.new :title => "testing", :address => "222 water > > > > > st" > > > > > => #<Hotspot:0xb732af48 @attributes={"title"=>"testing", > > > > > "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", "address"=>"222 water > > > > > st", "long"=>"NULL"}, @new_record=true> > > > > > >> spot.save > > > > > => true > > > > > > "???" > > > > > > and here''s the source, right from the controller''s mouth: > > > > > > def create > > > > > if session[:user] > > > > > spot = Hotspot.new :title => "testing", :address => "222 water st" > > > > > spot.save > > > > > end > > > > > end > > > > > > and here''s what that gives me: > > > > > > Processing ApiController#create (for 127.0.0.1 at 2007-05-09 23:30:52) > > > > > [POST] > > > > > Session ID: b859a7e645f2c60ddd4747368a677b04 > > > > > Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", > > > > > "controller"=>"api", "address"=>"asdf", "lat"=>"47.54501765940571", > > > > > "long"=>"-52.7204704284668"} > > > > > User Load (0.000560) SELECT * FROM users WHERE (login = ''mikew'' > > > > > and password = ''test'') LIMIT 1 > > > > > SQL (0.000000) SQLite3::SQLException: SQL logic error or missing > > > > > database: INSERT INTO hotspots ("title", "notes", "user_id", > > > > > "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 water st'', > > > > > ''NULL'', ''NULL'') > > > > > > ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error > > > > > or missing database: INSERT INTO hotspots ("title", "notes", > > > > > "user_id", "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 > > > > > water st'', ''NULL'', ''NULL'')) > > > > > > now I can''t make any sense of what''s going on--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
okay, I''ve cleaned up those NULL values. the problem was I had ubuntu''s libsqlite3-ruby1.8 package installed. once I uninstalled that the values were being stored properly as nil. but I still get the StatementInvalid error from the controller Processing ApiController#create (for 127.0.0.1 at 2007-05-11 12:35:15) [POST] Session ID: 74e977db220146ab742e2eb0811854d4 Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", "controller"=>"api", "address"=>"asdf", "lat"=>"47.55857307874545", "long"=>"-52.71583557128906"} User Load (0.000549) SELECT * FROM users WHERE (login = ''mikew'' and password = ''test'') LIMIT 1 SQL (0.000000) SQLite3::SQLException: SQL logic error or missing database: INSERT INTO hotspots ("created_on", "title", "notes", "user_id", "address", "lat", "long") VALUES(''2007-05-11 12:35:15'', ''testing'', NULL, NULL, ''222 water st'', NULL, NULL) ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error or missing database: INSERT INTO hotspots ("created_on", "title", "notes", "user_id", "address", "lat", "long") VALUES(''2007-05-11 12:35:15'', ''testing'', NULL, NULL, ''222 water st'', NULL, NULL)) On May 11, 1:00 pm, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> after installing sqlite3 3.3.7 and reinstalling sqlite3-ruby there''s > still no change. I still get that big error in the controller and NULL > values in the console > > also, this is interesting. here is the migration used to create the > table: > > $ cat db/migrate/001_create_hotspots.rb > class CreateHotspots < ActiveRecord::Migration > def self.up > create_table :hotspots do |t| > t.column :title, :string > t.column :address, :string > t.column :notes, :string > t.column :user_id, :integer > t.column :lat, :string > t.column :long, :string > t.column :created_on, :datetime > end > end > > def self.down > drop_table :hotspots > end > end > > yet here''s the schema.rb in the end > > $ cat db/schema.rb > # This file is autogenerated. Instead of editing this file, please use > the > # migrations feature of ActiveRecord to incrementally modify your > database, and > # then regenerate this schema definition. > > ActiveRecord::Schema.define(:version => 4) do > ... > create_table "hotspots", :force => true do |t| > t.column "title", :string, :default => "NULL" > t.column "address", :string, :default => "NULL" > t.column "notes", :string, :default => "NULL" > t.column "user_id", :integer, :default => 0 > t.column "lat", :string, :default => "NULL" > t.column "long", :string, :default => "NULL" > t.column "created_on", :datetime > end > ... > end > > On May 11, 12:14 pm, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > oh sorry chris, you were right. I thought I saw it returning ''nil'' > > values, but it turns out it sets and returns NULL values > > > $ ./script/console > > Loading development environment.>> spot = Hotspot.new :title => "test", :address => "2 signal hill rd" > > > => #<Hotspot:0xb73ebea0 @attributes={"created_on"=>nil, > > "title"=>"test", "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", > > "address"=>"2 signal hill rd", "long"=>"NULL"}, @new_record=true>>> spot.save > > => true > > >> Hotspot.find :first > > > => #<Hotspot:0xb7364e28 @attributes={"created_on"=>"2007-05-11 > > 11:43:13", "title"=>"test", "id"=>"1", "notes"=>"NULL", > > "user_id"=>"0", "address"=>"2 signal hill rd", "lat"=>"NULL", > > "long"=>"NULL"}> > > > here''s the schema: > > > $ sqlite3 db/development.sqlite3 > > SQLite version 3.3.13 > > Enter ".help" for instructions > > sqlite> .schema hotspots > > CREATE TABLE hotspots ("id" INTEGER PRIMARY KEY NOT NULL, "title" > > varchar(255) DEFAULT NULL, "address" varchar(255) DEFAULT NULL, > > "notes" varchar(255) DEFAULT NULL, "user_id" integer DEFAULT NULL, > > "lat" varchar(255) DEFAULT NULL, "long" varchar(255) DEFAULT NULL, > > "created_on" datetime DEFAULT NULL); > > sqlite> > > > as you can see I''m using sqlite 3.3.13. that''s no biggie though, I''ll > > try manually compiling 3.3.7 and the qslite3-ruby gem and see if that > > works out > > > On May 10, 9:34 pm, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > well, something is causing the empty attributes to be set to "NULL" > > > instead of nil. > > > > here''s some data i have in an sqlite3 db > > > > sqlite> select * from topics where parent_id IS NULL limit 1; > > > id name url_name parent_id > > > ---------- ---------- ---------- ---------- > > > 1 Technology technology > > > > script/console>> t = Topic.find(1) > > > > => #<Topic:0x382ce10 @attributes={"name"=>"Technology", "id"=>"1", > > > "url_name"=>"technology", "parent_id"=>nil}> > > > > >> t = Topic.new :name => "Foo", :url_name => "foo" > > > > => #<Topic:0x382910c @new_record=true, @attributes={"name"=>"Foo", > > > "parent_id"=>nil, "url_name"=>"foo"}> > > > > another thing you might try is to go into the sqlite3 console and > > > check out the schema for the table > > > $>sqlite3 db/development_db > > > sqlite> .schema <table_name> > > > > and see what the default is > > > > let us know what you find out > > > > On 5/10/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > oh, when I do fetch the record in the console, those null values come > > > > back as nil for ruby > > > > > what I don''t understand is how the same code can be used in the > > > > console and the controller and work in one and not the other > > > > > the models are blank except for the has_many/belongs_to/habtm > > > > relationships. and the migrations don''t set any default values > > > > > On May 10, 8:53 am, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > my guess is that the ''NULL'' values are the clues. > > > > > > null values in the database should come back as nil in rails > > > > > > ex: > > > > > > >> u = User.find(2) > > > > > > => #<User:0xb740fd54 @attributes={"created_on"=>"2007-04-30 06:34:09", > > > > > "last_login"=>nil, "name"=>"Bob Jones", "login_flag"=>"0", > > > > > "updated_on"=>"2007-04-30 06:34:09", "active_flag"=>"1", "id"=>"2", > > > > > "admin_flag"=>"1", "station"=>nil, "login"=>"bjones"}> > > > > > > my guess is that you are storing the actual string NULL in the > > > > > database somehow when you shouldn''t be and mysql is being forgiving > > > > > about it whereas sqlite3 is not. > > > > > > look in your model or your migrations for where you might be setting > > > > > default values incorrectly. > > > > > > other than that, nothing else jumps out as being strange or wrong. > > > > > > On 5/9/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > good evening (and morning, also!) everyone. this is my first attempt > > > > > > at using sqlite3 for a rails app, and so far, not so good > > > > > > > when I try to save a very basic record from the controller, it gives > > > > > > me back an ActiveRecord::StatementInvalid error. > > > > > > > "that doesn''t sound very nice" > > > > > > > so I switched the app to mysql and sure enough, it went through > > > > > > without a hitch. unsatisfied, I switched back to sqlite3 and fired up > > > > > > the console > > > > > > > mike@lua:~/Rails/hotspots$ ./script/console > > > > > > Loading development environment. > > > > > > >> spot = Hotspot.new :title => "testing", :address => "222 water > > > > > > st" > > > > > > => #<Hotspot:0xb732af48 @attributes={"title"=>"testing", > > > > > > "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", "address"=>"222 water > > > > > > st", "long"=>"NULL"}, @new_record=true> > > > > > > >> spot.save > > > > > > => true > > > > > > > "???" > > > > > > > and here''s the source, right from the controller''s mouth: > > > > > > > def create > > > > > > if session[:user] > > > > > > spot = Hotspot.new :title => "testing", :address => "222 water st" > > > > > > spot.save > > > > > > end > > > > > > end > > > > > > > and here''s what that gives me: > > > > > > > Processing ApiController#create (for 127.0.0.1 at 2007-05-09 23:30:52) > > > > > > [POST] > > > > > > Session ID: b859a7e645f2c60ddd4747368a677b04 > > > > > > Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", > > > > > > "controller"=>"api", "address"=>"asdf", "lat"=>"47.54501765940571", > > > > > > "long"=>"-52.7204704284668"} > > > > > > User Load (0.000560) SELECT * FROM users WHERE (login = ''mikew'' > > > > > > and password = ''test'') LIMIT 1 > > > > > > SQL (0.000000) SQLite3::SQLException: SQL logic error or missing > > > > > > database: INSERT INTO hotspots ("title", "notes", "user_id", > > > > > > "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 water st'', > > > > > > ''NULL'', ''NULL'') > > > > > > > ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error > > > > > > or missing database: INSERT INTO hotspots ("title", "notes", > > > > > > "user_id", "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 > > > > > > water st'', ''NULL'', ''NULL'')) > > > > > > > now I can''t make any sense of what''s going on--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
at the sqlite3 command prompt run .schema hotspots and make sure the columns that are being inserted with NULL values can take NULL. also, cut/paste that query from the error into the prompt and see what happens On 5/11/07, mikew <wyatt.mike-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > okay, I''ve cleaned up those NULL values. the problem was I had > ubuntu''s libsqlite3-ruby1.8 package installed. once I uninstalled that > the values were being stored properly as nil. but I still get the > StatementInvalid error from the controller > > Processing ApiController#create (for 127.0.0.1 at 2007-05-11 12:35:15) > [POST] > Session ID: 74e977db220146ab742e2eb0811854d4 > Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", > "controller"=>"api", "address"=>"asdf", "lat"=>"47.55857307874545", > "long"=>"-52.71583557128906"} > User Load (0.000549) SELECT * FROM users WHERE (login = ''mikew'' > and password = ''test'') LIMIT 1 > SQL (0.000000) SQLite3::SQLException: SQL logic error or missing > database: INSERT INTO hotspots ("created_on", "title", "notes", > "user_id", "address", "lat", "long") VALUES(''2007-05-11 12:35:15'', > ''testing'', NULL, NULL, ''222 water st'', NULL, NULL) > > > ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error > or missing database: INSERT INTO hotspots ("created_on", "title", > "notes", "user_id", "address", "lat", "long") VALUES(''2007-05-11 > 12:35:15'', ''testing'', NULL, NULL, ''222 water st'', NULL, NULL)) > > On May 11, 1:00 pm, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > after installing sqlite3 3.3.7 and reinstalling sqlite3-ruby there''s > > still no change. I still get that big error in the controller and NULL > > values in the console > > > > also, this is interesting. here is the migration used to create the > > table: > > > > $ cat db/migrate/001_create_hotspots.rb > > class CreateHotspots < ActiveRecord::Migration > > def self.up > > create_table :hotspots do |t| > > t.column :title, :string > > t.column :address, :string > > t.column :notes, :string > > t.column :user_id, :integer > > t.column :lat, :string > > t.column :long, :string > > t.column :created_on, :datetime > > end > > end > > > > def self.down > > drop_table :hotspots > > end > > end > > > > yet here''s the schema.rb in the end > > > > $ cat db/schema.rb > > # This file is autogenerated. Instead of editing this file, please use > > the > > # migrations feature of ActiveRecord to incrementally modify your > > database, and > > # then regenerate this schema definition. > > > > ActiveRecord::Schema.define(:version => 4) do > > ... > > create_table "hotspots", :force => true do |t| > > t.column "title", :string, :default => "NULL" > > t.column "address", :string, :default => "NULL" > > t.column "notes", :string, :default => "NULL" > > t.column "user_id", :integer, :default => 0 > > t.column "lat", :string, :default => "NULL" > > t.column "long", :string, :default => "NULL" > > t.column "created_on", :datetime > > end > > ... > > end > > > > On May 11, 12:14 pm, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > oh sorry chris, you were right. I thought I saw it returning ''nil'' > > > values, but it turns out it sets and returns NULL values > > > > > $ ./script/console > > > Loading development environment.>> spot = Hotspot.new :title => "test", :address => "2 signal hill rd" > > > > > => #<Hotspot:0xb73ebea0 @attributes={"created_on"=>nil, > > > "title"=>"test", "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", > > > "address"=>"2 signal hill rd", "long"=>"NULL"}, @new_record=true>>> spot.save > > > => true > > > >> Hotspot.find :first > > > > > => #<Hotspot:0xb7364e28 @attributes={"created_on"=>"2007-05-11 > > > 11:43:13", "title"=>"test", "id"=>"1", "notes"=>"NULL", > > > "user_id"=>"0", "address"=>"2 signal hill rd", "lat"=>"NULL", > > > "long"=>"NULL"}> > > > > > here''s the schema: > > > > > $ sqlite3 db/development.sqlite3 > > > SQLite version 3.3.13 > > > Enter ".help" for instructions > > > sqlite> .schema hotspots > > > CREATE TABLE hotspots ("id" INTEGER PRIMARY KEY NOT NULL, "title" > > > varchar(255) DEFAULT NULL, "address" varchar(255) DEFAULT NULL, > > > "notes" varchar(255) DEFAULT NULL, "user_id" integer DEFAULT NULL, > > > "lat" varchar(255) DEFAULT NULL, "long" varchar(255) DEFAULT NULL, > > > "created_on" datetime DEFAULT NULL); > > > sqlite> > > > > > as you can see I''m using sqlite 3.3.13. that''s no biggie though, I''ll > > > try manually compiling 3.3.7 and the qslite3-ruby gem and see if that > > > works out > > > > > On May 10, 9:34 pm, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > well, something is causing the empty attributes to be set to "NULL" > > > > instead of nil. > > > > > > here''s some data i have in an sqlite3 db > > > > > > sqlite> select * from topics where parent_id IS NULL limit 1; > > > > id name url_name parent_id > > > > ---------- ---------- ---------- ---------- > > > > 1 Technology technology > > > > > > script/console>> t = Topic.find(1) > > > > > > => #<Topic:0x382ce10 @attributes={"name"=>"Technology", "id"=>"1", > > > > "url_name"=>"technology", "parent_id"=>nil}> > > > > > > >> t = Topic.new :name => "Foo", :url_name => "foo" > > > > > > => #<Topic:0x382910c @new_record=true, @attributes={"name"=>"Foo", > > > > "parent_id"=>nil, "url_name"=>"foo"}> > > > > > > another thing you might try is to go into the sqlite3 console and > > > > check out the schema for the table > > > > $>sqlite3 db/development_db > > > > sqlite> .schema <table_name> > > > > > > and see what the default is > > > > > > let us know what you find out > > > > > > On 5/10/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > oh, when I do fetch the record in the console, those null values come > > > > > back as nil for ruby > > > > > > > what I don''t understand is how the same code can be used in the > > > > > console and the controller and work in one and not the other > > > > > > > the models are blank except for the has_many/belongs_to/habtm > > > > > relationships. and the migrations don''t set any default values > > > > > > > On May 10, 8:53 am, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > my guess is that the ''NULL'' values are the clues. > > > > > > > > null values in the database should come back as nil in rails > > > > > > > > ex: > > > > > > > > >> u = User.find(2) > > > > > > > > => #<User:0xb740fd54 @attributes={"created_on"=>"2007-04-30 06:34:09", > > > > > > "last_login"=>nil, "name"=>"Bob Jones", "login_flag"=>"0", > > > > > > "updated_on"=>"2007-04-30 06:34:09", "active_flag"=>"1", "id"=>"2", > > > > > > "admin_flag"=>"1", "station"=>nil, "login"=>"bjones"}> > > > > > > > > my guess is that you are storing the actual string NULL in the > > > > > > database somehow when you shouldn''t be and mysql is being forgiving > > > > > > about it whereas sqlite3 is not. > > > > > > > > look in your model or your migrations for where you might be setting > > > > > > default values incorrectly. > > > > > > > > other than that, nothing else jumps out as being strange or wrong. > > > > > > > > On 5/9/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > > > good evening (and morning, also!) everyone. this is my first attempt > > > > > > > at using sqlite3 for a rails app, and so far, not so good > > > > > > > > > when I try to save a very basic record from the controller, it gives > > > > > > > me back an ActiveRecord::StatementInvalid error. > > > > > > > > > "that doesn''t sound very nice" > > > > > > > > > so I switched the app to mysql and sure enough, it went through > > > > > > > without a hitch. unsatisfied, I switched back to sqlite3 and fired up > > > > > > > the console > > > > > > > > > mike@lua:~/Rails/hotspots$ ./script/console > > > > > > > Loading development environment. > > > > > > > >> spot = Hotspot.new :title => "testing", :address => "222 water > > > > > > > st" > > > > > > > => #<Hotspot:0xb732af48 @attributes={"title"=>"testing", > > > > > > > "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", "address"=>"222 water > > > > > > > st", "long"=>"NULL"}, @new_record=true> > > > > > > > >> spot.save > > > > > > > => true > > > > > > > > > "???" > > > > > > > > > and here''s the source, right from the controller''s mouth: > > > > > > > > > def create > > > > > > > if session[:user] > > > > > > > spot = Hotspot.new :title => "testing", :address => "222 water st" > > > > > > > spot.save > > > > > > > end > > > > > > > end > > > > > > > > > and here''s what that gives me: > > > > > > > > > Processing ApiController#create (for 127.0.0.1 at 2007-05-09 23:30:52) > > > > > > > [POST] > > > > > > > Session ID: b859a7e645f2c60ddd4747368a677b04 > > > > > > > Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", > > > > > > > "controller"=>"api", "address"=>"asdf", "lat"=>"47.54501765940571", > > > > > > > "long"=>"-52.7204704284668"} > > > > > > > User Load (0.000560) SELECT * FROM users WHERE (login = ''mikew'' > > > > > > > and password = ''test'') LIMIT 1 > > > > > > > SQL (0.000000) SQLite3::SQLException: SQL logic error or missing > > > > > > > database: INSERT INTO hotspots ("title", "notes", "user_id", > > > > > > > "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 water st'', > > > > > > > ''NULL'', ''NULL'') > > > > > > > > > ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error > > > > > > > or missing database: INSERT INTO hotspots ("title", "notes", > > > > > > > "user_id", "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 > > > > > > > water st'', ''NULL'', ''NULL'')) > > > > > > > > > now I can''t make any sense of what''s going on > > > > >--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
the only field that won''t accept null is the `id` field CREATE TABLE hotspots ("id" INTEGER PRIMARY KEY NOT NULL, "title" varchar(255) DEFAULT NULL, "address" varchar(255) DEFAULT NULL, "notes" varchar(255) DEFAULT NULL, "user_id" integer DEFAULT NULL, "lat" varchar(255) DEFAULT NULL, "long" varchar(255) DEFAULT NULL, "created_on" datetime DEFAULT NULL); I cut and pasted the failing code from the error message into the sqlite prompt and it went through without a hitch $ sqlite3 db/development.sqlite3 SQLite version 3.3.7 Enter ".help" for instructions sqlite> SELECT * FROM hotspots; sqlite> INSERT INTO hotspots ("created_on", "title", "notes", "user_id", "address", "lat", "long") VALUES(''2007-05-11 18:42:52'', ''testing'', NULL, NULL, ''222 water st'', NULL, NULL); sqlite> SELECT * FROM hotspots; 1|testing|222 water st|||||2007-05-11 18:42:52 sqlite> On May 11, 3:12 pm, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> at the sqlite3 command prompt run > > .schema hotspots > > and make sure the columns that are being inserted with NULL values can > take NULL. > > also, cut/paste that query from the error into the prompt and see what happens > > On 5/11/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > okay, I''ve cleaned up those NULL values. the problem was I had > > ubuntu''s libsqlite3-ruby1.8 package installed. once I uninstalled that > > the values were being stored properly as nil. but I still get the > > StatementInvalid error from the controller > > > Processing ApiController#create (for 127.0.0.1 at 2007-05-11 12:35:15) > > [POST] > > Session ID: 74e977db220146ab742e2eb0811854d4 > > Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", > > "controller"=>"api", "address"=>"asdf", "lat"=>"47.55857307874545", > > "long"=>"-52.71583557128906"} > > User Load (0.000549) SELECT * FROM users WHERE (login = ''mikew'' > > and password = ''test'') LIMIT 1 > > SQL (0.000000) SQLite3::SQLException: SQL logic error or missing > > database: INSERT INTO hotspots ("created_on", "title", "notes", > > "user_id", "address", "lat", "long") VALUES(''2007-05-11 12:35:15'', > > ''testing'', NULL, NULL, ''222 water st'', NULL, NULL) > > > ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error > > or missing database: INSERT INTO hotspots ("created_on", "title", > > "notes", "user_id", "address", "lat", "long") VALUES(''2007-05-11 > > 12:35:15'', ''testing'', NULL, NULL, ''222 water st'', NULL, NULL)) > > > On May 11, 1:00 pm, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > after installing sqlite3 3.3.7 and reinstalling sqlite3-ruby there''s > > > still no change. I still get that big error in the controller and NULL > > > values in the console > > > > also, this is interesting. here is the migration used to create the > > > table: > > > > $ cat db/migrate/001_create_hotspots.rb > > > class CreateHotspots < ActiveRecord::Migration > > > def self.up > > > create_table :hotspots do |t| > > > t.column :title, :string > > > t.column :address, :string > > > t.column :notes, :string > > > t.column :user_id, :integer > > > t.column :lat, :string > > > t.column :long, :string > > > t.column :created_on, :datetime > > > end > > > end > > > > def self.down > > > drop_table :hotspots > > > end > > > end > > > > yet here''s the schema.rb in the end > > > > $ cat db/schema.rb > > > # This file is autogenerated. Instead of editing this file, please use > > > the > > > # migrations feature of ActiveRecord to incrementally modify your > > > database, and > > > # then regenerate this schema definition. > > > > ActiveRecord::Schema.define(:version => 4) do > > > ... > > > create_table "hotspots", :force => true do |t| > > > t.column "title", :string, :default => "NULL" > > > t.column "address", :string, :default => "NULL" > > > t.column "notes", :string, :default => "NULL" > > > t.column "user_id", :integer, :default => 0 > > > t.column "lat", :string, :default => "NULL" > > > t.column "long", :string, :default => "NULL" > > > t.column "created_on", :datetime > > > end > > > ... > > > end > > > > On May 11, 12:14 pm, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > oh sorry chris, you were right. I thought I saw it returning ''nil'' > > > > values, but it turns out it sets and returns NULL values > > > > > $ ./script/console > > > > Loading development environment.>> spot = Hotspot.new :title => "test", :address => "2 signal hill rd" > > > > > => #<Hotspot:0xb73ebea0 @attributes={"created_on"=>nil, > > > > "title"=>"test", "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", > > > > "address"=>"2 signal hill rd", "long"=>"NULL"}, @new_record=true>>> spot.save > > > > => true > > > > >> Hotspot.find :first > > > > > => #<Hotspot:0xb7364e28 @attributes={"created_on"=>"2007-05-11 > > > > 11:43:13", "title"=>"test", "id"=>"1", "notes"=>"NULL", > > > > "user_id"=>"0", "address"=>"2 signal hill rd", "lat"=>"NULL", > > > > "long"=>"NULL"}> > > > > > here''s the schema: > > > > > $ sqlite3 db/development.sqlite3 > > > > SQLite version 3.3.13 > > > > Enter ".help" for instructions > > > > sqlite> .schema hotspots > > > > CREATE TABLE hotspots ("id" INTEGER PRIMARY KEY NOT NULL, "title" > > > > varchar(255) DEFAULT NULL, "address" varchar(255) DEFAULT NULL, > > > > "notes" varchar(255) DEFAULT NULL, "user_id" integer DEFAULT NULL, > > > > "lat" varchar(255) DEFAULT NULL, "long" varchar(255) DEFAULT NULL, > > > > "created_on" datetime DEFAULT NULL); > > > > sqlite> > > > > > as you can see I''m using sqlite 3.3.13. that''s no biggie though, I''ll > > > > try manually compiling 3.3.7 and the qslite3-ruby gem and see if that > > > > works out > > > > > On May 10, 9:34 pm, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > well, something is causing the empty attributes to be set to "NULL" > > > > > instead of nil. > > > > > > here''s some data i have in an sqlite3 db > > > > > > sqlite> select * from topics where parent_id IS NULL limit 1; > > > > > id name url_name parent_id > > > > > ---------- ---------- ---------- ---------- > > > > > 1 Technology technology > > > > > > script/console>> t = Topic.find(1) > > > > > > => #<Topic:0x382ce10 @attributes={"name"=>"Technology", "id"=>"1", > > > > > "url_name"=>"technology", "parent_id"=>nil}> > > > > > > >> t = Topic.new :name => "Foo", :url_name => "foo" > > > > > > => #<Topic:0x382910c @new_record=true, @attributes={"name"=>"Foo", > > > > > "parent_id"=>nil, "url_name"=>"foo"}> > > > > > > another thing you might try is to go into the sqlite3 console and > > > > > check out the schema for the table > > > > > $>sqlite3 db/development_db > > > > > sqlite> .schema <table_name> > > > > > > and see what the default is > > > > > > let us know what you find out > > > > > > On 5/10/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > oh, when I do fetch the record in the console, those null values come > > > > > > back as nil for ruby > > > > > > > what I don''t understand is how the same code can be used in the > > > > > > console and the controller and work in one and not the other > > > > > > > the models are blank except for the has_many/belongs_to/habtm > > > > > > relationships. and the migrations don''t set any default values > > > > > > > On May 10, 8:53 am, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > my guess is that the ''NULL'' values are the clues. > > > > > > > > null values in the database should come back as nil in rails > > > > > > > > ex: > > > > > > > > >> u = User.find(2) > > > > > > > > => #<User:0xb740fd54 @attributes={"created_on"=>"2007-04-30 06:34:09", > > > > > > > "last_login"=>nil, "name"=>"Bob Jones", "login_flag"=>"0", > > > > > > > "updated_on"=>"2007-04-30 06:34:09", "active_flag"=>"1", "id"=>"2", > > > > > > > "admin_flag"=>"1", "station"=>nil, "login"=>"bjones"}> > > > > > > > > my guess is that you are storing the actual string NULL in the > > > > > > > database somehow when you shouldn''t be and mysql is being forgiving > > > > > > > about it whereas sqlite3 is not. > > > > > > > > look in your model or your migrations for where you might be setting > > > > > > > default values incorrectly. > > > > > > > > other than that, nothing else jumps out as being strange or wrong. > > > > > > > > On 5/9/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > > > good evening (and morning, also!) everyone. this is my first attempt > > > > > > > > at using sqlite3 for a rails app, and so far, not so good > > > > > > > > > when I try to save a very basic record from the controller, it gives > > > > > > > > me back an ActiveRecord::StatementInvalid error. > > > > > > > > > "that doesn''t sound very nice" > > > > > > > > > so I switched the app to mysql and sure enough, it went through > > > > > > > > without a hitch. unsatisfied, I switched back to sqlite3 and fired up > > > > > > > > the console > > > > > > > > > mike@lua:~/Rails/hotspots$ ./script/console > > > > > > > > Loading development environment. > > > > > > > > >> spot = Hotspot.new :title => "testing", :address => "222 water > > > > > > > > st" > > > > > > > > => #<Hotspot:0xb732af48 @attributes={"title"=>"testing", > > > > > > > > "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", "address"=>"222 water > > > > > > > > st", "long"=>"NULL"}, @new_record=true> > > > > > > > > >> spot.save > > > > > > > > => true > > > > > > > > > "???" > > > > > > > > > and here''s the source, right from the controller''s mouth: > > > > > > > > > def create > > > > > > > > if session[:user] > > > > > > > > spot = Hotspot.new :title => "testing", :address => "222 water st" > > > > > > > > spot.save > > > > > > > > end > > > > > > > > end > > > > > > > > > and here''s what that gives me: > > > > > > > > > Processing ApiController#create (for 127.0.0.1 at 2007-05-09 23:30:52) > > > > > > > > [POST] > > > > > > > > Session ID: b859a7e645f2c60ddd4747368a677b04 > > > > > > > > Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", > > > > > > > > "controller"=>"api", "address"=>"asdf", "lat"=>"47.54501765940571", > > > > > > > > "long"=>"-52.7204704284668"} > > > > > > > > User Load (0.000560) SELECT * FROM users WHERE (login = ''mikew'' > > > > > > > > and password = ''test'') LIMIT 1 > > > > > > > > SQL (0.000000) SQLite3::SQLException: SQL logic error or missing > > > > > > > > database: INSERT INTO hotspots ("title", "notes", "user_id", > > > > > > > > "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 water st'', > > > > > > > > ''NULL'', ''NULL'') > > > > > > > > > ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error > > > > > > > > or missing database: INSERT INTO hotspots ("title", "notes", > > > > > > > > "user_id", "address", "lat", "long") VALUES(''testing'', ''NULL'', 0, ''222 > > > > > > > > water st'', ''NULL'', ''NULL'')) > > > > > > > > > now I can''t make any sense of what''s going on--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
andrew.gallear-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
2007-May-12 09:04 UTC
Re: SQLite3 acting very strangely
Mike, It still looks to me as though the database.yml is wrong. I think development: adapter: sqlite3 database: db/development.sqlite3 timeout: 5000 should be development: adapter: sqlite3 dbfile: db/development.sqlite3 timeout: 5000 and similarly for test and production. Regards, Andrew On May 11, 10:14 pm, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> the only field that won''t accept null is the `id` field > > CREATE TABLE hotspots ("id" INTEGER PRIMARY KEY NOT NULL, "title" > varchar(255) DEFAULT NULL, "address" varchar(255) DEFAULT NULL, > "notes" varchar(255) DEFAULT NULL, "user_id" integer DEFAULT NULL, > "lat" varchar(255) DEFAULT NULL, "long" varchar(255) DEFAULT NULL, > "created_on" datetime DEFAULT NULL); > > I cut and pasted the failing code from the error message into the > sqlite prompt and it went through without a hitch > > $ sqlite3 db/development.sqlite3 > SQLite version 3.3.7 > Enter ".help" for instructions > sqlite> SELECT * FROM hotspots; > sqlite> INSERT INTO hotspots ("created_on", "title", "notes", > "user_id", "address", "lat", "long") VALUES(''2007-05-11 18:42:52'', > ''testing'', NULL, NULL, ''222 water st'', NULL, NULL); > sqlite> SELECT * FROM hotspots; > 1|testing|222 water st|||||2007-05-11 18:42:52 > sqlite> > > On May 11, 3:12 pm, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > at the sqlite3 command prompt run > > > .schema hotspots > > > and make sure the columns that are being inserted with NULL values can > > take NULL. > > > also, cut/paste that query from the error into the prompt and see what happens > > > On 5/11/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > okay, I''ve cleaned up those NULL values. the problem was I had > > > ubuntu''s libsqlite3-ruby1.8 package installed. once I uninstalled that > > > the values were being stored properly as nil. but I still get the > > > StatementInvalid error from the controller > > > > Processing ApiController#create (for 127.0.0.1 at 2007-05-11 12:35:15) > > > [POST] > > > Session ID: 74e977db220146ab742e2eb0811854d4 > > > Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", > > > "controller"=>"api", "address"=>"asdf", "lat"=>"47.55857307874545", > > > "long"=>"-52.71583557128906"} > > > User Load (0.000549) SELECT * FROM users WHERE (login = ''mikew'' > > > and password = ''test'') LIMIT 1 > > > SQL (0.000000) SQLite3::SQLException: SQL logic error or missing > > > database: INSERT INTO hotspots ("created_on", "title", "notes", > > > "user_id", "address", "lat", "long") VALUES(''2007-05-11 12:35:15'', > > > ''testing'', NULL, NULL, ''222 water st'', NULL, NULL) > > > > ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error > > > or missing database: INSERT INTO hotspots ("created_on", "title", > > > "notes", "user_id", "address", "lat", "long") VALUES(''2007-05-11 > > > 12:35:15'', ''testing'', NULL, NULL, ''222 water st'', NULL, NULL)) > > > > On May 11, 1:00 pm, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > after installing sqlite3 3.3.7 and reinstalling sqlite3-ruby there''s > > > > still no change. I still get that big error in the controller and NULL > > > > values in the console > > > > > also, this is interesting. here is the migration used to create the > > > > table: > > > > > $ cat db/migrate/001_create_hotspots.rb > > > > class CreateHotspots < ActiveRecord::Migration > > > > def self.up > > > > create_table :hotspots do |t| > > > > t.column :title, :string > > > > t.column :address, :string > > > > t.column :notes, :string > > > > t.column :user_id, :integer > > > > t.column :lat, :string > > > > t.column :long, :string > > > > t.column :created_on, :datetime > > > > end > > > > end > > > > > def self.down > > > > drop_table :hotspots > > > > end > > > > end > > > > > yet here''s the schema.rb in the end > > > > > $ cat db/schema.rb > > > > # This file is autogenerated. Instead of editing this file, please use > > > > the > > > > # migrations feature of ActiveRecord to incrementally modify your > > > > database, and > > > > # then regenerate this schema definition. > > > > > ActiveRecord::Schema.define(:version => 4) do > > > > ... > > > > create_table "hotspots", :force => true do |t| > > > > t.column "title", :string, :default => "NULL" > > > > t.column "address", :string, :default => "NULL" > > > > t.column "notes", :string, :default => "NULL" > > > > t.column "user_id", :integer, :default => 0 > > > > t.column "lat", :string, :default => "NULL" > > > > t.column "long", :string, :default => "NULL" > > > > t.column "created_on", :datetime > > > > end > > > > ... > > > > end > > > > > On May 11, 12:14 pm, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > oh sorry chris, you were right. I thought I saw it returning ''nil'' > > > > > values, but it turns out it sets and returns NULL values > > > > > > $ ./script/console > > > > > Loading development environment.>> spot = Hotspot.new :title => "test", :address => "2 signal hill rd" > > > > > > => #<Hotspot:0xb73ebea0 @attributes={"created_on"=>nil, > > > > > "title"=>"test", "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", > > > > > "address"=>"2 signal hill rd", "long"=>"NULL"}, @new_record=true>>> spot.save > > > > > => true > > > > > >> Hotspot.find :first > > > > > > => #<Hotspot:0xb7364e28 @attributes={"created_on"=>"2007-05-11 > > > > > 11:43:13", "title"=>"test", "id"=>"1", "notes"=>"NULL", > > > > > "user_id"=>"0", "address"=>"2 signal hill rd", "lat"=>"NULL", > > > > > "long"=>"NULL"}> > > > > > > here''s the schema: > > > > > > $ sqlite3 db/development.sqlite3 > > > > > SQLite version 3.3.13 > > > > > Enter ".help" for instructions > > > > > sqlite> .schema hotspots > > > > > CREATE TABLE hotspots ("id" INTEGER PRIMARY KEY NOT NULL, "title" > > > > > varchar(255) DEFAULT NULL, "address" varchar(255) DEFAULT NULL, > > > > > "notes" varchar(255) DEFAULT NULL, "user_id" integer DEFAULT NULL, > > > > > "lat" varchar(255) DEFAULT NULL, "long" varchar(255) DEFAULT NULL, > > > > > "created_on" datetime DEFAULT NULL); > > > > > sqlite> > > > > > > as you can see I''m using sqlite 3.3.13. that''s no biggie though, I''ll > > > > > try manually compiling 3.3.7 and the qslite3-ruby gem and see if that > > > > > works out > > > > > > On May 10, 9:34 pm, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > well, something is causing the empty attributes to be set to "NULL" > > > > > > instead of nil. > > > > > > > here''s some data i have in an sqlite3 db > > > > > > > sqlite> select * from topics where parent_id IS NULL limit 1; > > > > > > id name url_name parent_id > > > > > > ---------- ---------- ---------- ---------- > > > > > > 1 Technology technology > > > > > > > script/console>> t = Topic.find(1) > > > > > > > => #<Topic:0x382ce10 @attributes={"name"=>"Technology", "id"=>"1", > > > > > > "url_name"=>"technology", "parent_id"=>nil}> > > > > > > > >> t = Topic.new :name => "Foo", :url_name => "foo" > > > > > > > => #<Topic:0x382910c @new_record=true, @attributes={"name"=>"Foo", > > > > > > "parent_id"=>nil, "url_name"=>"foo"}> > > > > > > > another thing you might try is to go into the sqlite3 console and > > > > > > check out the schema for the table > > > > > > $>sqlite3 db/development_db > > > > > > sqlite> .schema <table_name> > > > > > > > and see what the default is > > > > > > > let us know what you find out > > > > > > > On 5/10/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > > oh, when I do fetch the record in the console, those null values come > > > > > > > back as nil for ruby > > > > > > > > what I don''t understand is how the same code can be used in the > > > > > > > console and the controller and work in one and not the other > > > > > > > > the models are blank except for the has_many/belongs_to/habtm > > > > > > > relationships. and the migrations don''t set any default values > > > > > > > > On May 10, 8:53 am, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > > my guess is that the ''NULL'' values are the clues. > > > > > > > > > null values in the database should come back as nil in rails > > > > > > > > > ex: > > > > > > > > > >> u = User.find(2) > > > > > > > > > => #<User:0xb740fd54 @attributes={"created_on"=>"2007-04-30 06:34:09", > > > > > > > > "last_login"=>nil, "name"=>"Bob Jones", "login_flag"=>"0", > > > > > > > > "updated_on"=>"2007-04-30 06:34:09", "active_flag"=>"1", "id"=>"2", > > > > > > > > "admin_flag"=>"1", "station"=>nil, "login"=>"bjones"}> > > > > > > > > > my guess is that you are storing the actual string NULL in the > > > > > > > > database somehow when you shouldn''t be and mysql is being forgiving > > > > > > > > about it whereas sqlite3 is not. > > > > > > > > > look in your model or your migrations for where you might be setting > > > > > > > > default values incorrectly. > > > > > > > > > other than that, nothing else jumps out as being strange or wrong. > > > > > > > > > On 5/9/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > > > > good evening (and morning, also!) everyone. this is my first attempt > > > > > > > > > at using sqlite3 for a rails app, and so far, not so good > > > > > > > > > > when I try to save a very basic record from the controller, it gives > > > > > > > > > me back an ActiveRecord::StatementInvalid error. > > > > > > > > > > "that doesn''t sound very nice" > > > > > > > > > > so I switched the app to mysql and sure enough, it went through > > > > > > > > > without a hitch. unsatisfied, I switched back to sqlite3 and fired up > > > > > > > > > the console > > > > > > > > > > mike@lua:~/Rails/hotspots$ ./script/console > > > > > > > > > Loading development environment. > > > > > > > > > >> spot = Hotspot.new :title => "testing", :address => "222 water > > > > > > > > > st" > > > > > > > > > => #<Hotspot:0xb732af48 @attributes={"title"=>"testing", > > > > > > > > > "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", "address"=>"222 water > > > > > > > > > st", "long"=>"NULL"}, @new_record=true> > > > > > > > > > >> spot.save > > > > > > > > > => true > > > > > > > > > > "???" > > > > > > > > > > and here''s the source, right from the controller''s mouth: > > > > > > > > > > def create > > > > > > > > > if session[:user] > > > > > > > > > spot = Hotspot.new :title => "testing", :address => "222 water st" > > > > > > > > > spot.save > > > > > > > > > end > > > > > > > > > end > > > > > > > > > > and here''s what that gives me: > > > > > > > > > > Processing ApiController#create (for 127.0.0.1 at 2007-05-09 > > ... > > read more »--~--~---------~--~----~------------~-------~--~----~ 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@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
actually either works, however :database is the preferred option due to consistency. http://dev.rubyonrails.org/ticket/2644 On 5/12/07, andrew.gallear-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org <andrew.gallear-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > Mike, > > It still looks to me as though the database.yml is wrong. I think > > development: > adapter: sqlite3 > database: db/development.sqlite3 > timeout: 5000 > > should be > > development: > adapter: sqlite3 > dbfile: db/development.sqlite3 > timeout: 5000 > > and similarly for test and production. > > Regards, > > Andrew > > > On May 11, 10:14 pm, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > the only field that won''t accept null is the `id` field > > > > CREATE TABLE hotspots ("id" INTEGER PRIMARY KEY NOT NULL, "title" > > varchar(255) DEFAULT NULL, "address" varchar(255) DEFAULT NULL, > > "notes" varchar(255) DEFAULT NULL, "user_id" integer DEFAULT NULL, > > "lat" varchar(255) DEFAULT NULL, "long" varchar(255) DEFAULT NULL, > > "created_on" datetime DEFAULT NULL); > > > > I cut and pasted the failing code from the error message into the > > sqlite prompt and it went through without a hitch > > > > $ sqlite3 db/development.sqlite3 > > SQLite version 3.3.7 > > Enter ".help" for instructions > > sqlite> SELECT * FROM hotspots; > > sqlite> INSERT INTO hotspots ("created_on", "title", "notes", > > "user_id", "address", "lat", "long") VALUES(''2007-05-11 18:42:52'', > > ''testing'', NULL, NULL, ''222 water st'', NULL, NULL); > > sqlite> SELECT * FROM hotspots; > > 1|testing|222 water st|||||2007-05-11 18:42:52 > > sqlite> > > > > On May 11, 3:12 pm, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > at the sqlite3 command prompt run > > > > > .schema hotspots > > > > > and make sure the columns that are being inserted with NULL values can > > > take NULL. > > > > > also, cut/paste that query from the error into the prompt and see what happens > > > > > On 5/11/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > okay, I''ve cleaned up those NULL values. the problem was I had > > > > ubuntu''s libsqlite3-ruby1.8 package installed. once I uninstalled that > > > > the values were being stored properly as nil. but I still get the > > > > StatementInvalid error from the controller > > > > > > Processing ApiController#create (for 127.0.0.1 at 2007-05-11 12:35:15) > > > > [POST] > > > > Session ID: 74e977db220146ab742e2eb0811854d4 > > > > Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", > > > > "controller"=>"api", "address"=>"asdf", "lat"=>"47.55857307874545", > > > > "long"=>"-52.71583557128906"} > > > > User Load (0.000549) SELECT * FROM users WHERE (login = ''mikew'' > > > > and password = ''test'') LIMIT 1 > > > > SQL (0.000000) SQLite3::SQLException: SQL logic error or missing > > > > database: INSERT INTO hotspots ("created_on", "title", "notes", > > > > "user_id", "address", "lat", "long") VALUES(''2007-05-11 12:35:15'', > > > > ''testing'', NULL, NULL, ''222 water st'', NULL, NULL) > > > > > > ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error > > > > or missing database: INSERT INTO hotspots ("created_on", "title", > > > > "notes", "user_id", "address", "lat", "long") VALUES(''2007-05-11 > > > > 12:35:15'', ''testing'', NULL, NULL, ''222 water st'', NULL, NULL)) > > > > > > On May 11, 1:00 pm, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > after installing sqlite3 3.3.7 and reinstalling sqlite3-ruby there''s > > > > > still no change. I still get that big error in the controller and NULL > > > > > values in the console > > > > > > > also, this is interesting. here is the migration used to create the > > > > > table: > > > > > > > $ cat db/migrate/001_create_hotspots.rb > > > > > class CreateHotspots < ActiveRecord::Migration > > > > > def self.up > > > > > create_table :hotspots do |t| > > > > > t.column :title, :string > > > > > t.column :address, :string > > > > > t.column :notes, :string > > > > > t.column :user_id, :integer > > > > > t.column :lat, :string > > > > > t.column :long, :string > > > > > t.column :created_on, :datetime > > > > > end > > > > > end > > > > > > > def self.down > > > > > drop_table :hotspots > > > > > end > > > > > end > > > > > > > yet here''s the schema.rb in the end > > > > > > > $ cat db/schema.rb > > > > > # This file is autogenerated. Instead of editing this file, please use > > > > > the > > > > > # migrations feature of ActiveRecord to incrementally modify your > > > > > database, and > > > > > # then regenerate this schema definition. > > > > > > > ActiveRecord::Schema.define(:version => 4) do > > > > > ... > > > > > create_table "hotspots", :force => true do |t| > > > > > t.column "title", :string, :default => "NULL" > > > > > t.column "address", :string, :default => "NULL" > > > > > t.column "notes", :string, :default => "NULL" > > > > > t.column "user_id", :integer, :default => 0 > > > > > t.column "lat", :string, :default => "NULL" > > > > > t.column "long", :string, :default => "NULL" > > > > > t.column "created_on", :datetime > > > > > end > > > > > ... > > > > > end > > > > > > > On May 11, 12:14 pm, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > > oh sorry chris, you were right. I thought I saw it returning ''nil'' > > > > > > values, but it turns out it sets and returns NULL values > > > > > > > > $ ./script/console > > > > > > Loading development environment.>> spot = Hotspot.new :title => "test", :address => "2 signal hill rd" > > > > > > > > => #<Hotspot:0xb73ebea0 @attributes={"created_on"=>nil, > > > > > > "title"=>"test", "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", > > > > > > "address"=>"2 signal hill rd", "long"=>"NULL"}, @new_record=true>>> spot.save > > > > > > => true > > > > > > >> Hotspot.find :first > > > > > > > > => #<Hotspot:0xb7364e28 @attributes={"created_on"=>"2007-05-11 > > > > > > 11:43:13", "title"=>"test", "id"=>"1", "notes"=>"NULL", > > > > > > "user_id"=>"0", "address"=>"2 signal hill rd", "lat"=>"NULL", > > > > > > "long"=>"NULL"}> > > > > > > > > here''s the schema: > > > > > > > > $ sqlite3 db/development.sqlite3 > > > > > > SQLite version 3.3.13 > > > > > > Enter ".help" for instructions > > > > > > sqlite> .schema hotspots > > > > > > CREATE TABLE hotspots ("id" INTEGER PRIMARY KEY NOT NULL, "title" > > > > > > varchar(255) DEFAULT NULL, "address" varchar(255) DEFAULT NULL, > > > > > > "notes" varchar(255) DEFAULT NULL, "user_id" integer DEFAULT NULL, > > > > > > "lat" varchar(255) DEFAULT NULL, "long" varchar(255) DEFAULT NULL, > > > > > > "created_on" datetime DEFAULT NULL); > > > > > > sqlite> > > > > > > > > as you can see I''m using sqlite 3.3.13. that''s no biggie though, I''ll > > > > > > try manually compiling 3.3.7 and the qslite3-ruby gem and see if that > > > > > > works out > > > > > > > > On May 10, 9:34 pm, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > > > well, something is causing the empty attributes to be set to "NULL" > > > > > > > instead of nil. > > > > > > > > > here''s some data i have in an sqlite3 db > > > > > > > > > sqlite> select * from topics where parent_id IS NULL limit 1; > > > > > > > id name url_name parent_id > > > > > > > ---------- ---------- ---------- ---------- > > > > > > > 1 Technology technology > > > > > > > > > script/console>> t = Topic.find(1) > > > > > > > > > => #<Topic:0x382ce10 @attributes={"name"=>"Technology", "id"=>"1", > > > > > > > "url_name"=>"technology", "parent_id"=>nil}> > > > > > > > > > >> t = Topic.new :name => "Foo", :url_name => "foo" > > > > > > > > > => #<Topic:0x382910c @new_record=true, @attributes={"name"=>"Foo", > > > > > > > "parent_id"=>nil, "url_name"=>"foo"}> > > > > > > > > > another thing you might try is to go into the sqlite3 console and > > > > > > > check out the schema for the table > > > > > > > $>sqlite3 db/development_db > > > > > > > sqlite> .schema <table_name> > > > > > > > > > and see what the default is > > > > > > > > > let us know what you find out > > > > > > > > > On 5/10/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > > > > oh, when I do fetch the record in the console, those null values come > > > > > > > > back as nil for ruby > > > > > > > > > > what I don''t understand is how the same code can be used in the > > > > > > > > console and the controller and work in one and not the other > > > > > > > > > > the models are blank except for the has_many/belongs_to/habtm > > > > > > > > relationships. and the migrations don''t set any default values > > > > > > > > > > On May 10, 8:53 am, "Chris Hall" <christopher.k.h...@gmail.com> wrote: > > > > > > > > > my guess is that the ''NULL'' values are the clues. > > > > > > > > > > > null values in the database should come back as nil in rails > > > > > > > > > > > ex: > > > > > > > > > > > >> u = User.find(2) > > > > > > > > > > > => #<User:0xb740fd54 @attributes={"created_on"=>"2007-04-30 06:34:09", > > > > > > > > > "last_login"=>nil, "name"=>"Bob Jones", "login_flag"=>"0", > > > > > > > > > "updated_on"=>"2007-04-30 06:34:09", "active_flag"=>"1", "id"=>"2", > > > > > > > > > "admin_flag"=>"1", "station"=>nil, "login"=>"bjones"}> > > > > > > > > > > > my guess is that you are storing the actual string NULL in the > > > > > > > > > database somehow when you shouldn''t be and mysql is being forgiving > > > > > > > > > about it whereas sqlite3 is not. > > > > > > > > > > > look in your model or your migrations for where you might be setting > > > > > > > > > default values incorrectly. > > > > > > > > > > > other than that, nothing else jumps out as being strange or wrong. > > > > > > > > > > > On 5/9/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > > > > > > good evening (and morning, also!) everyone. this is my first attempt > > > > > > > > > > at using sqlite3 for a rails app, and so far, not so good > > > > > > > > > > > > when I try to save a very basic record from the controller, it gives > > > > > > > > > > me back an ActiveRecord::StatementInvalid error. > > > > > > > > > > > > "that doesn''t sound very nice" > > > > > > > > > > > > so I switched the app to mysql and sure enough, it went through > > > > > > > > > > without a hitch. unsatisfied, I switched back to sqlite3 and fired up > > > > > > > > > > the console > > > > > > > > > > > > mike@lua:~/Rails/hotspots$ ./script/console > > > > > > > > > > Loading development environment. > > > > > > > > > > >> spot = Hotspot.new :title => "testing", :address => "222 water > > > > > > > > > > st" > > > > > > > > > > => #<Hotspot:0xb732af48 @attributes={"title"=>"testing", > > > > > > > > > > "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", "address"=>"222 water > > > > > > > > > > st", "long"=>"NULL"}, @new_record=true> > > > > > > > > > > >> spot.save > > > > > > > > > > => true > > > > > > > > > > > > "???" > > > > > > > > > > > > and here''s the source, right from the controller''s mouth: > > > > > > > > > > > > def create > > > > > > > > > > if session[:user] > > > > > > > > > > spot = Hotspot.new :title => "testing", :address => "222 water st" > > > > > > > > > > spot.save > > > > > > > > > > end > > > > > > > > > > end > > > > > > > > > > > > and here''s what that gives me: > > > > > > > > > > > > Processing ApiController#create (for 127.0.0.1 at 2007-05-09 > > > > ... > > > > read more » > > > > >--~--~---------~--~----~------------~-------~--~----~ 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@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
I posted on the Rails Trac, but that doesn''t seem to be going anywhere either <http://dev.rubyonrails.org/ticket/8360> so for now, the app has switched to MySQL On May 12, 6:02 pm, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> actually either works, however :database is the preferred option due > to consistency. > > http://dev.rubyonrails.org/ticket/2644 > > On 5/12/07, andrew.gall...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org <andrew.gall...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > Mike, > > > It still looks to me as though the database.yml is wrong. I think > > > development: > > adapter:sqlite3 > > database: db/development.sqlite3 > > timeout: 5000 > > > should be > > > development: > > adapter:sqlite3 > > dbfile: db/development.sqlite3 > > timeout: 5000 > > > and similarly for test and production. > > > Regards, > > > Andrew > > > On May 11, 10:14 pm, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > the only field that won''t accept null is the `id` field > > > > CREATE TABLE hotspots ("id" INTEGER PRIMARY KEY NOT NULL, "title" > > > varchar(255) DEFAULT NULL, "address" varchar(255) DEFAULT NULL, > > > "notes" varchar(255) DEFAULT NULL, "user_id" integer DEFAULT NULL, > > > "lat" varchar(255) DEFAULT NULL, "long" varchar(255) DEFAULT NULL, > > > "created_on" datetime DEFAULT NULL); > > > > I cut and pasted the failing code from the error message into the > > > sqlite prompt and it went through without a hitch > > > > $sqlite3db/development.sqlite3 > > > SQLite version 3.3.7 > > > Enter ".help" for instructions > > > sqlite> SELECT * FROM hotspots; > > > sqlite> INSERT INTO hotspots ("created_on", "title", "notes", > > > "user_id", "address", "lat", "long") VALUES(''2007-05-11 18:42:52'', > > > ''testing'', NULL, NULL, ''222 water st'', NULL, NULL); > > > sqlite> SELECT * FROM hotspots; > > > 1|testing|222 water st|||||2007-05-11 18:42:52 > > > sqlite> > > > > On May 11, 3:12 pm, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > at thesqlite3command prompt run > > > > > .schema hotspots > > > > > and make sure the columns that are being inserted with NULL values can > > > > take NULL. > > > > > also, cut/paste that query from the error into the prompt and see what happens > > > > > On 5/11/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > okay, I''ve cleaned up those NULL values. the problem was I had > > > > > ubuntu''s libsqlite3-ruby1.8 package installed. once I uninstalled that > > > > > the values were being stored properly as nil. but I still get the > > > > > StatementInvalid error from the controller > > > > > > Processing ApiController#create (for 127.0.0.1 at 2007-05-11 12:35:15) > > > > > [POST] > > > > > Session ID: 74e977db220146ab742e2eb0811854d4 > > > > > Parameters: {"title"=>"asdf", "action"=>"create", "notes"=>"", > > > > > "controller"=>"api", "address"=>"asdf", "lat"=>"47.55857307874545", > > > > > "long"=>"-52.71583557128906"} > > > > > User Load (0.000549) SELECT * FROM users WHERE (login = ''mikew'' > > > > > and password = ''test'') LIMIT 1 > > > > > SQL (0.000000) SQLite3::SQLException: SQL logic error or missing > > > > > database: INSERT INTO hotspots ("created_on", "title", "notes", > > > > > "user_id", "address", "lat", "long") VALUES(''2007-05-11 12:35:15'', > > > > > ''testing'', NULL, NULL, ''222 water st'', NULL, NULL) > > > > > > ActiveRecord::StatementInvalid (SQLite3::SQLException: SQL logic error > > > > > or missing database: INSERT INTO hotspots ("created_on", "title", > > > > > "notes", "user_id", "address", "lat", "long") VALUES(''2007-05-11 > > > > > 12:35:15'', ''testing'', NULL, NULL, ''222 water st'', NULL, NULL)) > > > > > > On May 11, 1:00 pm, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > after installingsqlite33.3.7 and reinstallingsqlite3-ruby there''s > > > > > > still no change. I still get that big error in the controller and NULL > > > > > > values in the console > > > > > > > also, this is interesting. here is the migration used to create the > > > > > > table: > > > > > > > $ cat db/migrate/001_create_hotspots.rb > > > > > > class CreateHotspots < ActiveRecord::Migration > > > > > > def self.up > > > > > > create_table :hotspots do |t| > > > > > > t.column :title, :string > > > > > > t.column :address, :string > > > > > > t.column :notes, :string > > > > > > t.column :user_id, :integer > > > > > > t.column :lat, :string > > > > > > t.column :long, :string > > > > > > t.column :created_on, :datetime > > > > > > end > > > > > > end > > > > > > > def self.down > > > > > > drop_table :hotspots > > > > > > end > > > > > > end > > > > > > > yet here''s the schema.rb in the end > > > > > > > $ cat db/schema.rb > > > > > > # This file is autogenerated. Instead of editing this file, please use > > > > > > the > > > > > > # migrations feature of ActiveRecord to incrementally modify your > > > > > > database, and > > > > > > # then regenerate this schema definition. > > > > > > > ActiveRecord::Schema.define(:version => 4) do > > > > > > ... > > > > > > create_table "hotspots", :force => true do |t| > > > > > > t.column "title", :string, :default => "NULL" > > > > > > t.column "address", :string, :default => "NULL" > > > > > > t.column "notes", :string, :default => "NULL" > > > > > > t.column "user_id", :integer, :default => 0 > > > > > > t.column "lat", :string, :default => "NULL" > > > > > > t.column "long", :string, :default => "NULL" > > > > > > t.column "created_on", :datetime > > > > > > end > > > > > > ... > > > > > > end > > > > > > > On May 11, 12:14 pm, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > > oh sorry chris, you were right. I thought I saw it returning ''nil'' > > > > > > > values, but it turns out it sets and returns NULL values > > > > > > > > $ ./script/console > > > > > > > Loading development environment.>> spot = Hotspot.new :title => "test", :address => "2 signal hill rd" > > > > > > > > => #<Hotspot:0xb73ebea0 @attributes={"created_on"=>nil, > > > > > > > "title"=>"test", "notes"=>"NULL", "user_id"=>0, "lat"=>"NULL", > > > > > > > "address"=>"2 signal hill rd", "long"=>"NULL"}, @new_record=true>>> spot.save > > > > > > > => true > > > > > > > >> Hotspot.find :first > > > > > > > > => #<Hotspot:0xb7364e28 @attributes={"created_on"=>"2007-05-11 > > > > > > > 11:43:13", "title"=>"test", "id"=>"1", "notes"=>"NULL", > > > > > > > "user_id"=>"0", "address"=>"2 signal hill rd", "lat"=>"NULL", > > > > > > > "long"=>"NULL"}> > > > > > > > > here''s the schema: > > > > > > > > $sqlite3db/development.sqlite3 > > > > > > > SQLite version 3.3.13 > > > > > > > Enter ".help" for instructions > > > > > > > sqlite> .schema hotspots > > > > > > > CREATE TABLE hotspots ("id" INTEGER PRIMARY KEY NOT NULL, "title" > > > > > > > varchar(255) DEFAULT NULL, "address" varchar(255) DEFAULT NULL, > > > > > > > "notes" varchar(255) DEFAULT NULL, "user_id" integer DEFAULT NULL, > > > > > > > "lat" varchar(255) DEFAULT NULL, "long" varchar(255) DEFAULT NULL, > > > > > > > "created_on" datetime DEFAULT NULL); > > > > > > > sqlite> > > > > > > > > as you can see I''m using sqlite 3.3.13. that''s no biggie though, I''ll > > > > > > > try manually compiling 3.3.7 and the qslite3-ruby gem and see if that > > > > > > > works out > > > > > > > > On May 10, 9:34 pm, "Chris Hall" <christopher.k.h...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > > > well, something is causing the empty attributes to be set to "NULL" > > > > > > > > instead of nil. > > > > > > > > > here''s some data i have in ansqlite3db > > > > > > > > > sqlite> select * from topics where parent_id IS NULL limit 1; > > > > > > > > id name url_name parent_id > > > > > > > > ---------- ---------- ---------- ---------- > > > > > > > > 1 Technology technology > > > > > > > > > script/console>> t = Topic.find(1) > > > > > > > > > => #<Topic:0x382ce10 @attributes={"name"=>"Technology", "id"=>"1", > > > > > > > > "url_name"=>"technology", "parent_id"=>nil}> > > > > > > > > > >> t = Topic.new :name => "Foo", :url_name => "foo" > > > > > > > > > => #<Topic:0x382910c @new_record=true, @attributes={"name"=>"Foo", > > > > > > > > "parent_id"=>nil, "url_name"=>"foo"}> > > > > > > > > > another thing you might try is to go into thesqlite3console and > > > > > > > > check out the schema for the table > > > > > > > > $>sqlite3db/development_db > > > > > > > > sqlite> .schema <table_name> > > > > > > > > > and see what the default is > > > > > > > > > let us know what you find out > > > > > > > > > On 5/10/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > > > > oh, when I do fetch the record in the console, those null values come > > > > > > > > > back as nil for ruby > > > > > > > > > > what I don''t understand is how the same code can be used in the > > > > > > > > > console and the controller and work in one and not the other > > > > > > > > > > the models are blank except for the has_many/belongs_to/habtm > > > > > > > > > relationships. and the migrations don''t set any default values > > > > > > > > > > On May 10, 8:53 am, "Chris Hall" <christopher.k.h...@gmail.com> wrote: > > > > > > > > > > my guess is that the ''NULL'' values are the clues. > > > > > > > > > > > null values in the database should come back as nil in rails > > > > > > > > > > > ex: > > > > > > > > > > > >> u = User.find(2) > > > > > > > > > > > => #<User:0xb740fd54 @attributes={"created_on"=>"2007-04-30 06:34:09", > > > > > > > > > > "last_login"=>nil, "name"=>"Bob Jones", "login_flag"=>"0", > > > > > > > > > > "updated_on"=>"2007-04-30 06:34:09", "active_flag"=>"1", "id"=>"2", > > > > > > > > > > "admin_flag"=>"1", "station"=>nil, "login"=>"bjones"}> > > > > > > > > > > > my guess is that you are storing the actual string NULL in the > > > > > > > > > > database somehow when you shouldn''t be and mysql is being forgiving > > > > > > > > > > about it whereassqlite3is not. > > > > > > > > > > > look in your model or your migrations for where you might be setting > > > > > > > > > > default values incorrectly. > > > > > > > > > > > other than that, nothing else jumps out as being strange or wrong. > > > > > > > > > > > On 5/9/07, mikew <wyatt.m...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > > > > > > > good evening (and morning, also!) everyone. this is my first attempt > > > > > > > > > > > at usingsqlite3for a rails app, and so far, not so good > > > > > > > > > > > > when > > ... > > read more »--~--~---------~--~----~------------~-------~--~----~ 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@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---