【问题标题】:Rails: after using scaffold, I can't migrateRails:使用脚手架后,我无法迁移
【发布时间】:2014-11-28 11:22:13
【问题描述】:

[导轨 4.1.6,红宝石 2.1.3p242]

1.设置 database.yml database: bookshop ,并在我的数据库中创建 bookshop 数据库。

2.通过SQL创建一个新表booksid int(10), name varchar(45)(我使用MySQL)。

3.一切正常,我可以在浏览器中打开项目了。 在我成功输入rails g scaffold Book id:integer name:string 后,事情变得有点奇怪。 但是,当我重新启动 rails 项目时,浏览器就出来了

“正在等待迁移。要解决此问题,请运行:bin/rake db:migrate RAILS_ENV=development”

  1. 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'后,它又可以工作了!再次感谢你! :)

标签: ruby-on-rails scaffold


【解决方案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 表并运行迁移
  • 好的。在我手动放下我的桌子“书”后,它又可以工作了!太感谢了! :)
猜你喜欢
  • 2017-03-21
  • 2015-01-24
  • 2018-02-12
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 2018-10-07
相关资源
最近更新 更多