修复已删除的迁移和表中的错误

时间:2014-02-18 19:46:49

标签: ruby-on-rails heroku sqlite

我正在尝试更新我的heroku数据库。问题:我创建了一个旧模型&我们不再需要的表格。该表先前已迁移到生产服务器(以及其他更改)。我使用以下方法破坏了模型:

rails destroy model ReallyLongModelName

这也删除了创建表的迁移。 后来,我创建了一个删除该表的迁移。

class Drop_ReallyLongTableName < ActiveRecord::Migration
  def change
    drop_table :really_long_table_name
  end
end

我现在遇到了一些错误。

第一个错误:

尝试将数据库迁移到应用程序的生产版本时,出现此错误。

Input string is longer than NAMEDATALEN-1 (63)

我不确定如何返回并编辑名称以避免使用长名称,以便清除

第二个错误:

当尝试回滚Drop_ReallyLongTableName迁移时,它会中止rake,因为

rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: no such table: really_long_table_name

有没有人对如何解决这个问题有任何想法?谢谢!

1 个答案:

答案 0 :(得分:0)

您是否尝试过终端/控制台运行此功能:

heroku run console
ActiveRecord::Migration.drop_table(:table_name)

迁移是可行的方法,但这可能值得尝试查看表是否甚至存在(因为您的第二条错误消息似乎表明它不再存在)。

此外,对于它的价值,您可以在将来需要时为数据库迁移添加条件逻辑

def change
  drop_table :table_name if self.table_exists?("table_name")
end