数据库调试和故障排除

本节的目的是提供一些复制参考,当您遇到一些令人头疼的数据库问题时,可以将其用作参考。

一个简单的第一步是在Slack或谷歌“GitLab”中搜索你的错误。


可用RAILS_ENV

  • 生产(通常不用于您的主要GDK数据库,但您可能需要例如omnibus)
  • 发展(这是你的主要GDK数据库)
  • 测试(用于rspec和菠菜等测试)

用核武器摧毁一切,重新开始

如果你只是想删除所有内容,然后用一个空的DB重新开始(~1分钟):

  • bundle exec rake db:reset RAILS_ENV=development

如果您只是想删除所有内容并重新使用虚拟数据(约40分钟)。这也是db:重置并运行特定于db的迁移:

  • bundle exec rake dev:setup RAILS_ENV=development

如果你的测试数据库给你的问题,它是安全的,因为它不包含重要的数据:

  • bundle exec rake db:reset RAILS_ENV=test . exe

迁移争吵

  • bundle exec rake db:migrate RAILS_ENV=development:执行您可能从MR中获取的任何挂起的迁移
  • bundle exec rake db:migrate:status RAILS_ENV=development:检查所有迁移是否正常向上下来
  • bundle exec rake db:migrate:down VERSION=20170926203418 RAILS_ENV=development . exe:取消迁移
  • bundle exec rake db:migrate:up VERSION=20170926203418 RAILS_ENV=development:设置迁移
  • bundle exec rake db:migrate:redo VERSION=20170926203418 RAILS_ENV=development . exe:重新运行特定的迁移

手动访问数据库

通过以下命令之一访问数据库(它们都将您带到相同的位置)

gitlabhq_developmentbundle exec rails dbconsole RAILS_ENV=developmentbundle exec rails db RAILS_ENV=development
  • \问:停止/退出
  • \ dt:列出所有表格
  • \ d +问题:列出问题表格
  • 创建表board_labels():创建一个名为board_labels
  • SELECT * FROM schema_migrations WHERE version = '20170926203418';:检查是否运行了迁移
  • DELETE FROM schema_migrations WHERE version = '20170926203418';:手动移除迁移

常见问题解答

ActiveRecord:: PendingMigrationError在春天

运行规格时使用弹簧预紧器,测试数据库可能会进入损坏状态。尝试运行迁移或删除/重置测试数据库没有效果。

执行Spring rspec some_spec.rb失败/错误:ActiveRecord:: Migration.maintain_test_schema !ActiveRecord:: PendingMigrationError:迁移正在等待中。要解决此问题,请运行:bin / rake db:迁移RAILS_ENV=测试# ~ / .rvm /珠宝/ ruby-2.3.3 /珠宝/ activerecord-4.2.10 / lib / active_record /迁移。rb: 392:“check_pending !”0个例子,0个失败,1个错误发生在例子之外

要解决这个问题,您可以终止运行规范之间的spring服务器和应用程序。

Ps x |grep春天Eric 87304 1.3 2.9 3080836 482596 ??s 10:12AM 4:08.36 spring app | gitlab |启动6小时前测试模式eric 37709 0.0 0.0 2518640 7524 s006 S Wed11AM 0:00.79 spring server | gitlab |开始29小时前杀了87304杀了37709
Baidu
map