Rake db:setup 或 rake db:create 应用错误的用户名/错误的数据库[英] Rake db:setup or rake db:create applying wrong username/wrong database

本文是小编为大家收集整理的关于Rake db:setup 或 rake db:create 应用错误的用户名/错误的数据库的处理方法,想解了Rake db:setup 或 rake db:create 应用错误的用户名/错误的数据库的问题怎么解决?Rake db:setup 或 rake db:create 应用错误的用户名/错误的数据库问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

使用 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:create 或 rake 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 问题?

推荐答案

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

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

所以我想,也许环境变量优先于<appname>_development(但在生成<appname>_test时不适用)然后,我查看了我的 .zshrc 文件并查看了该值的设置位置:

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

一旦我注释掉了这个导出行,然后重新加载/重新启动 shell,运行 rake db:create 就会生成 <appname>_development 应该的.

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

本文地址:https://www.itbaoku.cn/post/1764099.html