Forum: Ruby on Rails find_by_sql error, any ideas please

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
A1247f73598357f06388e863c41aa624?d=identicon&s=25 Elias Orozco (elioncho)
on 2009-01-23 23:44
(Received via mailing list)
Hello,

I am having problems with the find_by_sql while trying to update a
table. I am using mysql and rails 2.2.2.

A small test like this:

User.find_by_sql "update users set name='Test'"

generates a horrible error. I might also add that I have config.gem
"mysql" in my environment.rb and that I have tested the update query
with sqlite and it works. Any ideas?

Thanks,

Elías

You have a nil object when you didn't expect it!
The error occurred while evaluating nil.all_hashes
    /home/elioncho/.gem/ruby/1.8/gems/activerecord-2.2.2/lib/
active_record/connection_adapters/mysql_adapter.rb:564:in `select'
    /home/elioncho/.gem/ruby/1.8/gems/activerecord-2.2.2/lib/
active_record/connection_adapters/abstract/database_statements.rb:7:in
`select_all_without_query_cache'
    /home/elioncho/.gem/ruby/1.8/gems/activerecord-2.2.2/lib/
active_record/connection_adapters/abstract/query_cache.rb:60:in
`select_all'
    /home/elioncho/.gem/ruby/1.8/gems/activerecord-2.2.2/lib/
active_record/connection_adapters/abstract/query_cache.rb:81:in
`cache_sql'
    /home/elioncho/.gem/ruby/1.8/gems/activerecord-2.2.2/lib/
active_record/connection_adapters/abstract/query_cache.rb:60:in
`select_all'
    /home/elioncho/.gem/ruby/1.8/gems/activerecord-2.2.2/lib/
active_record/base.rb:635:in `find_by_sql'
B54c73767addd2a75cf005e3941b7829?d=identicon&s=25 Aldo Sarmiento (sarmiena)
on 2009-01-23 23:53
sounds like you should be using "execute" instead of "find_by" since you
aren't trying to find anything.
A1247f73598357f06388e863c41aa624?d=identicon&s=25 Elias Orozco (elioncho)
on 2009-01-24 00:15
(Received via mailing list)
Aldo Sarmiento,

Thanks for your reply, but the why does the update query inside the
find_by_sql using sqlite works?

Kind regards,

Elías

On Jan 23, 5:53 pm, Aldo Sarmiento <rails-mailing-l...@andreas-s.net>
A1247f73598357f06388e863c41aa624?d=identicon&s=25 Elias Orozco (elioncho)
on 2009-01-24 00:17
(Received via mailing list)
Sorry typo error. Here it is again:

Aldo Sarmiento,

Thanks for your reply, but then why does the update query inside the
find_by_sql using sqlite works?

Kind regards,

Elías
A1247f73598357f06388e863c41aa624?d=identicon&s=25 Elias Orozco (elioncho)
on 2009-01-24 08:14
(Received via mailing list)
Should I use the execute method then?
C64e63b70be7dfed8b0742540b8b27e5?d=identicon&s=25 Mark Reginald James (Guest)
on 2009-01-25 04:55
(Received via mailing list)
elioncho wrote:

> User.find_by_sql "update users set name='Test'"

Use User.update_all ['name = ?', 'Test']
or  User.update "update users set name='Test'"

--
Rails Wheels - Find Plugins, List & Sell Plugins -
http://railswheels.com
This topic is locked and can not be replied to.