【问题标题】:Rails looking for a databases not specified by database.ymlRails 寻找未由 database.yml 指定的数据库
【发布时间】:2013-07-30 22:02:30
【问题描述】:

我最近提取了一些代码并运行了 rspec。测试顺利通过。然而,当我运行“rake db:migrate”和“rake db:prepare”时,我遇到了问题。

现在没有 rspec 测试通过,每次失败都会引用相同的错误:

Mysql2::Error: Table 'app_test.admins' doesn't exist: SHOW FULL FIELDS FROM `admins`

问题是,该数据库名称未在代码中的任何位置指定。在 database.yml 中,指定了“app_test”,没有“.admins”后缀。

同样,当我运行 rails server 时,我得到以下错误:

Mysql2::Error: Table 'app_dev.admins' doesn't exist: SHOW FULL FIELDS FROM `admins`

在 yml 中只指定了 'app_dev'。

rake 命令(db:migrate、db:test:prepare、db:create、db:drop 等)都是在修改 database.yml 指定的数据库,只是 Rails 正在寻找带有 '.管理员的后缀。这个“.admins”后缀是从哪里来的?如何删除它?

【问题讨论】:

标签: mysql ruby-on-rails activerecord devise


【解决方案1】:

app_test 和 app_dev 是数据库名称。

只是 Rails 正在寻找带有 '.admins' 的数据库 后缀。

其实 app_test.admins 和 app_dev.admins 是 rails 在这两个数据库中寻找的表。我会尝试的几种方法:

rake db:create
rake db:migrate

rake db:schema:load

【讨论】:

    【解决方案2】:

    问题如下:

    当我提取代码时,无论出于何种原因,“Admins”表从db/schema.rb 中消失了。此表无法通过 rake:db:migrate 恢复,因为创建它的迁移使用 t.database_authenticatable,该表已被弃用,不再适用于 Devise gem。因为我们是在遗留代码上构建的,所以我们只在最近更改的迁移上运行 rake db:migrate,而不是从空数据库(对于空数据库,我们使用 rake db:schema:load)。

    由于表在db/schema.rb 中丢失,即使我使用rake db:schema:load 也无法恢复。为了解决这个问题,我不得不使用git reset 来恢复到旧版本的db/schema.rb

    要修复设计弃用问题以便您可以运行所有迁移,请转到此处 - https://github.com/plataformatec/devise/wiki/How-To:-Upgrade-to-Devise-2.0-migration-schema-style

    【讨论】:

      【解决方案3】:

      rake db:prepare 是一个有效的命令吗?你试过 rake db:create:all 吗?

      【讨论】:

      • rake db:test:prepare 有效,rake db:prepare 无效。 rake db:create:all 没有解决问题
      【解决方案4】:

      您的rails-settings-cached 是否可以配置为使用admin 表?你记得输入rails g settings admin吗?

      在您的模型中检查 admin.rb 文件,或从 RailsSettings::CachedSettings 派生的模型

      检查你的初始化器是否有相同的 gem

      【讨论】:

      • 我没有输入那个命令,但是有一个模型源自RailsSettings::CachedSettings。如何将这些设置更改为不使用 .admins 表?
      • 在我发布答案之前,我需要知道模型的名称
      • 模型名为settings
      • 这不是我所期望的 :) 然后我想我正在寻找错误的方向。对不起朋友,祝你好运
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 1970-01-01
      相关资源
      最近更新 更多