Rails 应用程序有 schema.rb 但没有迁移文件
Rails Application has schema.rb but no migrate files
我正在接管一个 Rails 项目,该项目有一个已填充的 schema.rb 文件,但奇怪的是它没有迁移文件夹,也没有迁移文件。我对这门语言还很陌生,但是模式文件不是基于迁移文件创建的吗?如果我 运行 "rake db:migrate",架构文件中现有的 table 将被删除。这是否意味着之前的开发人员手动编辑了模式文件?我可以在安装 Ruby/Rails 时删除迁移文件吗?
此外,日志显示此错误:
PG::UndefinedTable: ERROR: relation "nameoftable" does not exist
这是否与没有迁移文件有关?
我现在正在创建迁移文件,但我想确认我是否理解正确。
提前致谢。
doesn't the schema file get created based on the migration files?
是的,但他们可以独立生存。我可以创建我的架构并通过多次迁移对其进行修改,然后在将项目发送给您之前删除迁移。
Rails 仍然会正常启动,因为他关心的是 schema.rb
文件的内容。
如果你想构建你的数据库,你应该从 schema.rb
加载模式而不是使用 rake db:migrate
。在一个非常大且长期存在的 Rails 项目中,您不能保证所有的迁移都能够 运行 从第一个到最后。
设置数据库的方式是使用命令
rake db:schema:load
然后您可以从那里开始在未来创建新的迁移。你真的不需要旧的迁移文件。
我正在接管一个 Rails 项目,该项目有一个已填充的 schema.rb 文件,但奇怪的是它没有迁移文件夹,也没有迁移文件。我对这门语言还很陌生,但是模式文件不是基于迁移文件创建的吗?如果我 运行 "rake db:migrate",架构文件中现有的 table 将被删除。这是否意味着之前的开发人员手动编辑了模式文件?我可以在安装 Ruby/Rails 时删除迁移文件吗?
此外,日志显示此错误:
PG::UndefinedTable: ERROR: relation "nameoftable" does not exist
这是否与没有迁移文件有关?
我现在正在创建迁移文件,但我想确认我是否理解正确。
提前致谢。
doesn't the schema file get created based on the migration files?
是的,但他们可以独立生存。我可以创建我的架构并通过多次迁移对其进行修改,然后在将项目发送给您之前删除迁移。
Rails 仍然会正常启动,因为他关心的是 schema.rb
文件的内容。
如果你想构建你的数据库,你应该从 schema.rb
加载模式而不是使用 rake db:migrate
。在一个非常大且长期存在的 Rails 项目中,您不能保证所有的迁移都能够 运行 从第一个到最后。
设置数据库的方式是使用命令
rake db:schema:load
然后您可以从那里开始在未来创建新的迁移。你真的不需要旧的迁移文件。