您好我是rails的新手。 我正在使用现有的postgres数据库。我想为所有表创建CRUD。 我开始时: rails g scaffold firstTableName
然后我开始使用rails: rails s
当我导航到localhost:3000 / firstTableName时,rails会出现以下错误: 迁移正在等待中;运行'bin / rake db:migrate RAILS_ENV = development'来解决此问题。
我认为'rake db:migrate'仅用于设置数据库。我的数据库已经设置好了。如果我运行'rake db:migrate',那么我会收到firstTableName已经存在的错误。 请帮助我了解如何让铁杆快乐。 谢谢。
答案 0 :(得分:1)
错误是因为您已经存在firstTableName表已经存在并且正如您所做的那样,它将为您创建模型,控制器和视图,因此它还为firstTableName创建了迁移。
如果您已经进行了迁移,请尝试在脚手架中跳过迁移
rails g scaffold firstTableName --skip-migration
答案 1 :(得分:0)
您的数据库应该有一个名为schema_migrations
的表,其中只有一列version
。然后,您应该手动将所有迁移版本写入该表。
放置在project_root/db/migrate/
中的迁移和文件名中的вшпшеы与版本迁移相同。
答案 2 :(得分:0)
当您运行迁移时,rails会通过将db / migrate文件夹中的每个迁移与schema_migrations表中的条目进行匹配来跟踪这些内容,该表包含rails已在版本列中为该环境运行的所有迁移的时间戳。
原因是允许您逐步迁移。
早期版本的rails有一个强大的理念,即下移也可以追溯到时间。但是,现在这已经成为一种选择。
您的投诉是因为无法创建schema_migrations表。我的建议是允许它通过在新数据库上运行rake db:migrate来实现。
如果此实例上的表中有数据,请在另一个数据库上运行,然后只复制版本表。