Ror-generated sql syntax fails at 'where'


I am working on my first Ruby-on-Rails project after completing
“cookbook” and “todo list” tutorials.

When "SAVE"ing a new record to a table, the “create” method throws SQL
error #42000 for:

SELECT * FROM mailboxes WHERE (key = ‘TEST’) LIMIT 1

but if i change syntax to fully-qualified column, the query tool is
happy with:

SELECT * FROM mailboxes WHERE (mailboxes.key = ‘TEST’) LIMIT 1

Unfortunately, as a newbie from the 4GL world, I haven’t a clue how to
go about tracking the execution thread, and especially don’t know if
this is a rails scaffold generation problem or if it is me.

Ruby v1.8.2, Rails 1.0.0, MySQL 5.0 all on WinXP(sorry!)-Pro fully

Many thanks in advance…


My guess may be that ‘key’ is a reserved word for whatever database you
are using. Indeed it is definitely a reserved word in MySQL. You will
need to rename the column ‘mykey’ or something else instead of ‘key’. I
have run into this myself and found this out the hard way.

Good luck!


‘key’ is a mysql reserved word. Using a different column name would be
easy fix. And yes, ‘keys’ is also a reserved word.

– Wes

On 3/21/06, craig spengler removed_email_address@domain.invalid wrote:

happy with:
Many thanks in advance…

Posted via

Rails mailing list

-- Wes


craig spengler wrote:

Many thanks in advance…

Thanks, guys, i’ll check it out right away.