Here are two links that explain that you need to be careful on decimal
columns when using mysql on the target platform. sqlite3 is a little
more forgiving.
That’s easier than the three-stage solution you used, though
equivalent in effect I believe.
For what it’s worth the “three-stage solution” can be done with one rake
task:
rake RAILS_ENV=staging db:migrate:reset
However, the change_column approach seems the safer and cleaner
solution. This technique keeps the migrations moving forward.
Given that dropping, recreating and migrating fixed your problem this
leads me to this question, "Was the precision and scale explicitly
configured in the migration before running the migrations?