gpt4 book ai didi

ruby-on-rails - rake 数据库 :setup or rake db:create applying wrong username/wrong database

转载 作者:行者123 更新时间:2023-11-29 12:11:38 28 4
gpt4 key购买 nike

使用 Mac OSX 优胜美地 (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

庆典:

$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 第一次:我的用户名已经存在第二次: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 issues?

最佳答案

解决了!这是一个环境变量。首先,我使用 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 客户端的指南。希望对别人有帮助

关于ruby-on-rails - rake 数据库 :setup or rake db:create applying wrong username/wrong database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31595245/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com