Migration with mysql reserved word

I have a column name called ‘order’ in two of my db tables.
I have just realized that it is causing some problems since ‘order’ is
a reserved word in mysql.
Unfortunately, trying to run a migration that includes…

rename_column :images_piles, :order, :sequence

…results in a mysql error (see below). Is there anyway way to run a
successful migration that forces mysql to treat ‘order’ as a column
name?

== ChangeOrderToSequence: migrating

– rename_column(:images_piles, :order, :sequence)
rake aborted!
Mysql::Error: You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to
use near ‘order sequence int(11)’ at line 1: ALTER TABLE images_piles
CHANGE order sequence int(11)

On 7 Mrz., 00:31, “[email protected][email protected]
wrote:

I have a column name called ‘order’ in two of my db tables.

I don’t know how to do it in rails, but when you have access to a
mysql
command-line-client or phpmyadmin installed there is an easy way.

Just write the query like this:

ALTER TABLE images_piles CHANGE order sequence int(11)

Simply put any keyword between backticks and it won’t be recognized
as a keyword any more.

Once you changed the name of the column you can do the rest of the
migration with rails.

HTH
Adrian

i’ve hit this problem before when i had a column named ‘group’ in my
table. i looked into the behavior because i noticed that rails,
specifically ActiveRecord, does add backticks some of the time, but
not all the time.

i even went in and forced it to use the reserved word by creating the
table manually from the cl and even though that worked, when i
attempted to add a new record, it blew up because AR wasn’t adding
backticks on the insert.

in the end, it was just easier to change the column name.

Chris

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs