我最近提取了一些代码并运行rspec。测试顺利通过。然而,当我运行“rake db:migrate”和“rakedb:prepare”时,我遇到了一个问题。
现在没有rspec测试通过,每个失败都会引用相同的错误:
Mysql2::Error: Table 'app_test.admins' doesn't exist: SHOW FULL FIELDS FROM `admins`
问题是,代码中没有指定数据库名。在database.yml中,指定了“app_test”,但没有后缀“.admins”。
类似地,当我运行rails服务器时,会得到以下错误:
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”的数据库。“admins”后缀从何而来,如何删除它?
最佳答案
app_test和app_dev是数据库名称。
只是Rails正在寻找带有“.admins”的数据库
后缀。
实际上app_test.admins和app_dev.admins是rails在这两个数据库中寻找的表。我会尝试以下几种方法:
rake db:create
rake db:migrate
或
rake db:schema:load
关于mysql - Rails寻找未由database.yml指定的数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17958253/