gpt4 book ai didi

ruby-on-rails - 现有数据库的 Rails 一直说迁移挂起

转载 作者:搜寻专家 更新时间:2023-10-30 22:13:15 24 4
gpt4 key购买 nike

我正在尝试使用现有数据库创建一个新的 Rails 项目。

我创建项目,配置 database.yml 并且可以成功执行 db:schema:dump

这一切都是基于我在这个网站上读到的内容

http://blog.joelberghoff.com/2013/02/06/ruby-on-rails-tutorial-creating-a-rails-instance-from-an-existing-mysql-db/

还有其他一些。

完成转储后,我将 schema.rb 复制到 db/migrate 并重命名为 001_createdatabase.rb,如他的教程中所述。

一切似乎都很好。但是我无法运行该网站,因为它告诉我我有待处理的迁移。 db:migrate:status 表示它是我创建的 001_createdatabase.rb。

因此基于此:

  • 从 schema.rb 创建 001_createdatabase 迁移是否正确?
  • 如果是,我如何让 Rails 明白它不需要像已经完成的那样运行那个?
  • rails 在哪里检查是否有挂起的迁移。显然它必须检查 db/migrate 文件夹并将其与什么进行比较?

谢谢

最佳答案

似乎为了获得运行迁移的荣誉,您需要实际运行迁移。迁移 001_createdatabase.rb 表示迁移,它将使您从拥有一个空数据库(没有表,没有数据)到拥有数据库的第一个版本。当您运行 rake db:migrate 时,rails 通过在 schema_migrations 表中查找迁移文件名的数字部分来检查是否运行了 db/migrate 目录中的每个文件。

在您的情况下,您没有运行迁移,schema_migrations 表中没有条目,因此 Rails 正确地认为有一个迁移要运行。

要解决此问题,您可以将已运行迁移的记录放入 schema_migrations 或实际运行迁移。您可能需要创建 schema_migrations 表,rails 会根据需要创建它。

如果你想运行迁移,要么删除你的数据库(或者创建一个新的——当它工作时你可以删除旧的),然后将你的 Rails 应用程序指向新的数据库。运行 rake db:createrake db:migrate。当它完成时,您应该有一个新的数据库副本,但它是由 rails 迁移过程创建的。 schema_migrations 表应该有一个版本列为 1 的记录。

关于ruby-on-rails - 现有数据库的 Rails 一直说迁移挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19817215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com