我正在尝试更新我的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
有没有人对如何解决这个问题有任何想法?谢谢!
答案 0 :(得分:0)
您是否尝试过终端/控制台运行此功能:
heroku run console
ActiveRecord::Migration.drop_table(:table_name)
迁移是可行的方法,但这可能值得尝试查看表是否甚至存在(因为您的第二条错误消息似乎表明它不再存在)。
此外,对于它的价值,您可以在将来需要时为数据库迁移添加条件逻辑
def change
drop_table :table_name if self.table_exists?("table_name")
end