2017-06-01 43 views
1

我有这样的事情时,我打耙分贝:迁移 林在我的应用程序中使用费加罗,它的我第一次用这种宝石任何MySQL的,所以我不能得到什么excatly是错误的。 感谢提前:)的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 

回答

1

我没有足够的点来问意见,但看起来您正尝试在不首先创建模式的情况下运行迁移。

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

rails db:create 

要设置特定的环境

rails db:create RAILS_ENV=test 

然后你可以运行rails 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 

注意:您可能需要重新启动系统为环境工作。

或者,如果你没有时间,只需在终端你正在运行的轨道S:

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

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

0

我碰到这样的麻烦,几天前,这是很烦人,因为Rails的尝试创建开发和测试数据库在开发环境时。没有工作。

我结束了硬编码database:database.yml,并让Figaro管理凭证。