Rails:使用脚手架后,我无法迁移
Posted
技术标签:
【中文标题】Rails:使用脚手架后,我无法迁移【英文标题】:Rails: after using scaffold, I can't migrate 【发布时间】:2014-11-28 11:22:13 【问题描述】:[导轨 4.1.6,红宝石 2.1.3p242]
1.设置 database.yml database: bookshop
,并在我的数据库中创建 bookshop
数据库。
2.通过SQL创建一个新表books
和id int(10), name varchar(45)
(我使用mysql)。
3.一切正常,我可以在浏览器中打开项目了。
在我成功输入rails g scaffold Book id:integer name:string
后,事情变得有点奇怪。
但是,当我重新启动 rails 项目时,浏览器就出来了
“正在等待迁移。要解决此问题,请运行:bin/rake db:migrate RAILS_ENV=development”
bin/rake db:migrate RAILS_ENV=development
它显示
== 20141003105907 CreateBooks:迁移 ====================================== -- create_table(:books) 耙中止! StandardError:发生错误,所有后续迁移都已取消:
您不能重新定义主键列“id”。要定义自定义主键,请将 id: false 传递给 create_table./usr/local/...
【问题讨论】:
创建 Book 表后,您必须将其迁移到数据库中,因此它等待您进行表的迁移,并且表的 id 会自动创建您不需要'不必定义它 我创建了表books
,然后我使用scaffold
。那么,我所做的顺序错误?
您是否尝试在不定义 id 的情况下销毁表并重新创建它?
在我手动放下我的表'books'后,它又可以工作了!再次感谢你! :)
【参考方案1】:
ID 字段默认添加到模型中 - 您不需要自己添加它们。
使用rails destroy scaffold Book
销毁您创建的脚手架,然后再次创建它——这次没有id:integer
字段。
【讨论】:
我按照你说的做了。但它再次显示"Migrations are pending. To resolve this issue, run: bin/rake db:migrate RAILS_ENV=development"
,我输入了rake....,它显示talbe 'books' has already exists..
@Johnn 脚手架创建 rails 使用的迁移。删除您的 books 表并运行迁移
好的。在我手动放下我的桌子“书”后,它又可以工作了!太感谢了! :)以上是关于Rails:使用脚手架后,我无法迁移的主要内容,如果未能解决你的问题,请参考以下文章