【问题标题】:Rake db:setup or rake db:create applying wrong username/wrong databaseRake db:setup 或 rake db:create 应用错误的用户名/错误的数据库
【发布时间】:2015-10-14 05:22:37
【问题描述】:

使用 Mac OSX Yosemite (10.10.4):

rails -v => Rails 4.2.3

ruby -v => ruby 2.2.2p95

遵循以下说明的组合: https://www.digitalocean.com/community/tutorials/how-to-setup-ruby-on-rails-with-postgres 和这些说明: http://blog.endpoint.com/2014/03/setup-rails-environment-with-postgresql.html

bash:

$createuser -P -d -e project (This was successful)
$password: aPassword
$re-enter password: aPassword
$rails new project --database=postgresql
$cd project/config/database.yml

这里是 config/database.yml:

default: &default
  adapter: postgresql
  encoding: unicode

  username: bespoke
  password: <%= ENV['PROJECT_DATABASE_PASSWORD'] %>
  #if I type env in bash => PROJECT_DATABASE_PROJECT: aPassword
  pool: 5

development:
  <<: *default
  database: Project_development

test:
  <<: *default
  database: Project_test

到目前为止一切都很好......但是:

rake db:create第一次: myusername already exists 第二次:rake db:setup我相信它们应该是相同的东西......

myusername already exists
Project_test already exists

/Users/myusername/Challenges/Project/db/schema.rb doesn't exist yet. Run `rake db:migrate` to create it, then try again. If you do not intend to use a database, you should instead alter /Users/myusername/Challenges/Project/config/application.rb to limit the frameworks that will be loaded.

所以换句话说,问题是:rake db:createrake db:setup 似乎做同样的事情能够创建表 Project_test 因此他们说 Project_test 已经创建......但他们拒绝创建表Project_development,而是坚持让我使用表myusername,它没有在任何地方列出~!

我尝试删除默认设置并将其硬编码到开发中,但无济于事。顺便说一下psql=>/list的输出

                                 List of databases
     Name     |  Owner  | Encoding |   Collate   |    Ctype    | Access privileges 
--------------+---------+----------+-------------+-------------+-------------------
 Project_test | project | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres     | mee     | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 myusername   | mee     | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 

这证明它确实创建了测试数据库并使用了正确的所有者/用户,但它拒绝创建开发数据库。

我做错了什么还是应该问他们的 github 问题?

【问题讨论】:

  • 顺便说一句,它实际上只是说我的特定用户名,这是我用于其他东西的数据库名称(因此它根本不创建该数据库)它只是决定默认使用该数据库。 ..这是不必要的,因为我多次尝试重做项目。包括在通过关闭 bash 重新启动/刷新 env 之后
  • 我也有同样的问题。当我开始开发第二个应用程序时,这一点才变得明显,因为数据库/第一个应用程序运行良好,被称为 而不是 _development。如果有帮助,我会继续; Rails 4.2.4 & ruby​​ 2.2.2p95 & OS X 11.2 El Capitan

标签: ruby-on-rails postgresql ruby-on-rails-4 activerecord rake


【解决方案1】:

解决了!这是一个环境变量。首先,我使用 env 查看所有变量,并注意到设置了 DATABASE_URL。

$env
...
DATABASE_URL=postgres:///steve
...

所以我想,也许环境变量优先于&lt;appname&gt;_development(但在生成&lt;appname&gt;_test时没有应用) 然后,我查看了我的 .zshrc 文件并查看了该值的设置位置:

➜  ~  cat .zshrc
# Added by Steve for permanent path vars
 export DATABASE_URL=postgres:///$(whoami)

一旦我注释掉了这个导出行,然后重新加载/重新启动 shell,运行 rake db:create 就会生成 &lt;appname&gt;_development

我不记得为什么需要设置该默认值,但我很高兴我在配置文件中做了一个注释,可能是按照通过命令行使用 postgres 客户端的指南进行的。 希望对其他人有所帮助

【讨论】:

猜你喜欢
  • 2014-02-01
  • 1970-01-01
  • 2013-03-06
  • 2012-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 2014-10-25
相关资源
最近更新 更多