The migration involved a loop to copy data from one column to a temporary column as part of the removal of a :default from the column, and the specific code causing the issue was:
$ rake db:migrate --trace ... ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment ... ** Execute db:migrate == NameOfMigration: migrating =========================== rake aborted! An error has occurred, all later migrations canceled: stack level too deep /path/to/rails/app/vendor/plugins/acts_as_paranoid/init.rb:3:in `belongs_to_without_deleted' /path/to/rails/app/vendor/plugins/acts_as_paranoid/init.rb:4:in `belongs_to_without_deleted' /path/to/rails/app/vendor/plugins/acts_as_paranoid/init.rb:4:in `belongs_to'
Richard said that we should be using is_paranoid instead of acts_as_paranoid in Rails 2.3+. After switching to using is_paranoid (which additionally involved removing acts_as_paranoid in our models, and removing acts_as_paranoid under vendor/plugins), this error went away. Thanks, Richard!
def self.up NameOfModel.find(:all).each do |b| end end