Eri*_* R. 15 migration ruby-on-rails ruby-on-rails-3
我正在运行Rails 3.0.3并且在我的迁移中意外地输入了一个拼写错误:我创建了一个迁移,它创建了一个类型为boolen(应该已经存在boolean)的新列.我运行了迁移,Rails并没有警告我这是一个无效的列类型,我可以在以前的版本中发誓它吗?
现在每当我尝试添加,删除或修改迁移中的任何内容时,我都会收到以下错误:
nil的未定义方法`to_sym':NilClass
我甚至无法回滚或丢弃.我有一个早期版本的数据库和文件树保存,但这个问题让我发疯,因为这不是我第一次看到这种情况发生.
如何在没有Rails抱怨的情况下有效地删除列(最好不要手动挖掘数据库)?
vor*_*rak 15
如果您使用的是SQLite数据库,则可能会收到此错误,因为SQLLite不提供删除列功能. http://www.sqlite.org/faq.html#q11
SQLLite建议您创建一个临时表,其中只包含原始表中所需的列,传输数据,然后交换表.
正如您在对数据库中的记录进行评论时所提到的那样,在尝试删除列时仍会出现错误.
:books, :name, :inntegr #here I have the order right but spelling is a problem.
Run Code Online (Sandbox Code Playgroud)
要解决此问题,您可以在迁移中手动运行sql命令
def self.up
execute "ALTER TABLE books DROP COLUMN name"
end
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
这是我在使用rails迁移时遇到的问题.你用一个名字拼错或拼错了一个字段.这是你可以做的.
rake db:rollback.rake db:rollback直到你在那里并且问题得到解决.问题是这样的.注意第一个上的顺序和第二个上的拼写.这两个问题给我的情况与你现在的情况相同,那就是to_symbs.
例如;
:books, :integer, :name #here I have `integer` before the name
:books, :name, :integr #here I have the order right but spelling is a problem.
Run Code Online (Sandbox Code Playgroud)
如果您有更多问题,请与我们联系.
如果您无法rake db:rollback进行新迁移,请删除表中的问题,然后重新生成.我以前必须这样做.只需确保您的订单正确.
| 归档时间: |
|
| 查看次数: |
17933 次 |
| 最近记录: |