无法加载`Rails.application.database_configuration`:未知别名:默认

use*_*747 9 ruby-on-rails

我是Ruby on Rails的新手,我猜我的问题的答案很简单,但我找不到它.我最近创建了一个项目并使用了"rails generate scaffold ...",一切正常.我想在数据库中添加另一列,所以我使用了"rails generate migration ...."之后一切都运行良好.我停止服务器并重新启动它后,问题就出现了.现在我得到这个错误Psych :: BadAlias无法加载Rails.application.database_configuration:未知别名:默认

我发现这个请求一个ruby-on-rails应用程序给出了Psych :: BadAlias错误,但我没有看到明确的答案.

这是我的database.yml文件的样子......

  #  

  <<: *default 
    database: db/development.sqlite3 


  test:
    <<: *default
    database: db/development.sqlite3_test

  production:
    <<: *default  
    database: db/development.sqlite3_production 
Run Code Online (Sandbox Code Playgroud)

这是我进行迁移后生成的文件

class AddHardwareToComputers < ActiveRecord::Migration
  def change
    add_column :computers, :hardware, :string
  end
end
Run Code Online (Sandbox Code Playgroud)

这是我的schema.rb

ActiveRecord::Schema.define(version: 20140723203054) do  

  create_table "computers", force: true do |t|
    t.string   "name"
    t.string   "serial_number"
    t.string   "user"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "hardware" 
  end

end
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.谢谢.

小智 5

我知道这是一个老问题,但我一直在寻找同样的问题,并使用 jvnill 的 + CocoHot 的建议解决了这个问题,并进行了小幅修正。我没有足够的分数来评论,所以我将修改后的解决方案添加为新答案。

首先,变化&defaults&default(单数); 第二,因为你正在使用sqlite3的(如我),更换适配器mysql2使用sqlite3

defaults: &default
  adapter: sqlite3
  encoding: utf8

development:
  <<: *default
  database: db/development.sqlite3

test:
  <<: *default
  database: db/development.sqlite3_test

production:
  <<: *default
  database: db/development.sqlite3_production
Run Code Online (Sandbox Code Playgroud)


jvn*_*ill 4

您的 yaml 文件应包含默认配置,如下所示

defaults: &default
  adapter: mysql2
  encoding: utf8

development:
  <<: *default
  database: app_development

test:
  <<: *default
  database: app_test
Run Code Online (Sandbox Code Playgroud)

编辑:2020 年 4 月 22 日

  • 更改defaultsdefault以使其不那么混乱。