繁体   English   中英

如何在不初始化Rails的情况下从schema.rb创建数据库?

[英]How to create database from schema.rb without initializing Rails?

我正在尝试从schema.rb创建所有表

我使用了命令:“rake db:schema:load”

但是,这会失败,因为在我的一个初始化程序中,它引用的模型/表显然不存在(因为数据库为空)

我可以注释掉这些行,然后运行schema:再次加载,但有替代方法吗?

可能最快的方法是将有问题的初始化程序移动到应用程序之外的临时目录,然后运行模式加载。 但是,如果这不起作用,或者由于某种原因不是一个选项,你可以通过创建一个简单的rails rails app来进行架构加载来解决这个问题:

  1. 创建一个新的rails应用程序: rails new (app)-fixer
  2. 将您的gemfile (除非有特定的例外)复制到修复程序应用程序。
  3. database.yml配置复制到修复程序应用程序。
  4. schema.rb文件复制到修复程序应用程序。
  5. 根据您的应用需要执行所有适当的“捆绑安装”命令。
  6. 然后运行"rake db:drop db:create db:schema:load"

这将根据您当前的架构从头开始构建一个新数据库。

您可以在初始化程序中添加对表存在的检查。

if TheModel.table_exists?
  // do something with the model
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM