【问题标题】:MySQL No database selected railsMySQL 未选择数据库
【发布时间】:2017-11-03 03:18:29
【问题描述】:

当我点击 rake db:migrate 时,我得到了类似的东西 我在我的应用程序中使用了 figaro,这是我第一次使用这个 gem 任何 mysql,所以我不知道什么是错误的。 在此先感谢:)

Mysql2::Error: No database selected: CREATE TABLE schema_migrations (version varchar(255) PRIMARY KEY) ENGINE=InnoDB

database.yml

default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: <%= ENV["DB_USER"] %>
  password: <%= ENV["DB_PASSWORD"] %>

development:
  <<: *default
  database: <%= ENV["DB_DATABASE_DEV"] %>


test:
  <<: *default
  database: <%= ENV["DB_DATABSE_TEST"] %>


production:
  <<: *default
  database: <%= ENV['DB_DATABASE_PRODUCTION'] %>

application.yml

default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: password

development:
  <<: *default
  database: dev

test:
  <<: *default
  database: test_db

【问题讨论】:

    标签: mysql ruby-on-rails figaro-ruby


    【解决方案1】:

    我没有足够的意义在评论中提问,但您似乎正在尝试在不先创建架构的情况下运行迁移。

    运行rails db:create 首先创建架构。例如,如果您的 MySQL 中没有名为“dev”的数据库,则此命令将执行此操作。

    rails db:create
    

    设置特定环境

    rails db:create RAILS_ENV=test
    

    然后你运行 canrails db:migrate

    如果需要,销毁架构:

    rails db:drop
    

    您正在使用 ENV

    虽然可能不相关,但您在运行命令之前是否正确设置了 ENV?

    对于 Windows,您可以添加那些,例如 DB_USER 到 system environment

    只需按开始并输入system environment >> Environment Variables... >> New...

    Variable Name: DB_USER
    Variable Value: your_username
    

    注意:您可能需要重新启动系统才能使环境正常工作。

    或者,如果您没有时间,只需在终端中运行 rails s:

    C:\Sites\ProjectName> set DB_USER=your_username
    C:\Sites\ProjectName> set DB_PASSWORD=your_username
    C:\Sites\ProjectName> rails s
    

    Linux的步骤相同,但我不知道具体的命令。有些人更喜欢使用 .env 文件。

    【讨论】:

      【解决方案2】:

      几天前我遇到了这个麻烦,这很烦人,因为 Rails 试图在开发环境中创建开发和测试数据库。没有任何效果。

      我最终将database: 硬编码为database.yml,并让 Figaro 管理凭据。

      【讨论】:

        【解决方案3】:

        我今天运行了同样的问题。

        确保您已安装 dotenv-rails gem,并且“DB_DATABASE_DEV”在您的 .env 文件中有一个值。

        另外,请确保您的数据库已创建。

        【讨论】:

          【解决方案4】:

          当您的database.yml 不包含database: some_database 部分或数据库名称为空时会发生这种情况。在您的情况下,您可以使用以下几个选项之一:

          选项 1:在包含数据库名称环境变量的情况下运行迁移

          DB_DATABASE_DEV=your_dev_db_name rails db:<task>
          

          选项 2:在 database.yml 文件中使用硬编码的数据库名称

          # database.yml
          development:
            <<: *default
            database: my_development_database
          

          选项 3:确保正确加载 env 变量

          要在 linux 中这样做,只需在终端中编写:

          echo ${DB_DATABASE_DEV}
          

          在 windows 终端上你需要这样写:

          echo %DB_DATABASE_DEV%
          

          如果没有内容,则未设置此环境变量

          【讨论】:

            猜你喜欢
            • 2012-12-06
            • 2013-11-24
            • 2015-06-13
            • 2012-01-20
            • 2014-05-14
            • 2010-10-25
            • 2014-03-25
            • 2011-02-16
            相关资源
            最近更新 更多