无法从rails中的SQLite数据库中删除摘要字段

时间:2017-01-25 08:36:39

标签: ruby-on-rails

我在SQLite表中添加了一列,如下所示

add_column :administrators, :pin, :digest

现在我要删除它。我用了

remove_column :administrators, :pin, :digest

这给了我这个错误

undefined method `to_sym' for nil:NilClass

为什么它不起作用?

1 个答案:

答案 0 :(得分:1)

我不相信:digest是SQLite的有效存储类型。当您使用错误拼写或其他不正确的存储类型时,这会遇到同样的问题,例如:克。

add_column :administrators, :sign_in_count, :integr

由于:integr拼写错误,后续迁移会产生to_sym错误

最好的建议是rake db:rollback,直到您尚未创建pin列,然后将列更改为支持的类型,例如:string

add_column :administrators, :pin, :string

你可以rake db:migrate再次前进。

您还应该在删除时保持一致...

remove_column :administrators, :pin, :string

(当然,如果您不想要该列,只要您回滚足够远,就可以删除add_columnremove_column。)

这假设您正在单独工作......如果您正在进行共享开发或部署项目,则需要与处理该项目的其他人协调此问题,并注意所创建的任何表和字段在add_column迁移和最终迁移之间将重新初始化,因此您可能会在开发(和其他)环境中丢失一些数据。您还需要使用

重置测试模式

rake db:test:prepare