【问题标题】:Rails 3 cannot recreate database - db:migrate hangsRails 3 无法重新创建数据库 - db:migrate 挂起
【发布时间】:2012-09-14 12:27:59
【问题描述】:

我在本地对我的应用程序进行了一些测试,但遇到了数据库死锁的情况。在谷歌上搜索了如何处理它之后,我决定因为它只是开发,所以我会炸毁数据库并重新创建它。

只有这样是行不通的。我已经重新创建了几次数据库,但从未遇到任何问题。

我可以运行 db:drop ok 并且 db:create 工作,但是当我运行 db:migrate 时它只是挂起。

我已经重新启动,以防一个进程在数据库上有某种锁定但没有变化。

没有错误,当我这样做时 --trace 我一点也不聪明。

任何帮助都将不胜感激,即使是从哪里开始调试问题

这就是我的数据库配置...

发展: 适配器:sqlite3 数据库:db/dev.sqlite3 游泳池:5 超时:5000

测试: 适配器:sqlite3 数据库:db/test.sqlite3 游泳池:5 超时:5000

谢谢

【问题讨论】:

  • 您是否尝试过在第一次迁移中仅使用 puts 来查看它是否到达那里?
  • 我刚刚在第一次迁移中的 def self.up 之后添加了“第一次迁移”,当我运行 db:migrate 时它没有出现。此外,当我运行 rails s 时,webrick 服务器也会挂起,它显示前几行,但永远不会到达它告诉您 pid 和端口的行。我使用相同的 gemset 创建了一个新的 rails 应用程序,我可以进行迁移并启动 webrick 服务器。
  • 听起来这可能与您放入 environment.rb 文件、application.rb 文件或初始化程序中的一些自定义内容有关。

标签: database ruby-on-rails-3


【解决方案1】:

我不是 100% 我是否应该说这个问题得到了回答,但它是固定的。感谢您的帮助,weexpectedTHIS,我开始查看 environment.rb、application.rb 和 boot.rb。我不会在里面放太多东西。我在 Environment.rb 中看到 my_app::Application.initialize! 行。

我假设这是冻结的地方。我对此进行了注释,果然 webrick 会加载,我至少可以运行 rake db:migrate 即使它失败了,我也可以进入 rails 控制台。显然,如果没有我注释掉的那行,该应用程序根本无法工作。所以我启动了控制台,注释掉了不同的东西,最终被注释掉的只是 my_app::Application.initialize!线。

我在 Rails 控制台中输入了那条线,它挂了,我取消并再试了几次,然后在运行了几次之后它就运行正常了。不知道为什么。我遇到了其他有类似问题的人,但他只是奇迹般地开始工作,没有明显的原因。不幸的是,我在同一条船上,对将来遇到这种情况的人没有多大帮助。

应用程序初始化肯定有问题,但我不知道到底是什么。

此链接将详细介绍 Rails 中的初始化过程,因此如果有人遇到类似问题,请阅读以获取想法。

http://guides.rubyonrails.org/initialization.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-18
    • 2020-11-24
    • 2011-04-11
    • 2014-11-01
    • 1970-01-01
    • 2014-06-16
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多