无法使用 rake db:create 命令创建数据库

Unable to create database with rake db:create command

我有 postgresql 服务 运行ning 但是当我 运行 rake db:create 它中止 rake 并抛出错误

ActiveRecord::NoDatabaseError: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: database “chat_development" does not exist

在我的 database.yml 我有

development:
  <<: *default
  database: chat_development

通过 运行 宁 rake 命令它应该创建数据库但它没有。我做了很多研究并尝试了给出的解决方案,但没有任何效果。我确实检查了这个讨论 here 但是当我 运行 rm /usr/local/var/postgres/postmaster.pid 它抛出错误

rm: /usr/local/var/postgres/postmaster.pid: No such file or directory

如果我运行命令ps auxwww | grep postgres它会显示/opt/homebrew/opt/postgresql/bin/postgres -D /opt/homebrew/var/postgres

如果我没记错的话,我在开始时(大约 4 周前)遇到了 postgres 安装问题,并且确实使用 Postgres.app 安装,然后我还安装了 brew install postgresql(因为我正在使用 mac)。不知道是不是多次安装有冲突

但刚才我卸载了 postgres.app 和 运行 gem uninstall pg 并使用命令 gem install pg -- --with-pg-config=/usr/local/bin/pg_config 重新安装(参考 here

问题依然存在。我不知道该怎么办了。很高兴有人能提供帮助。谢谢!

为了解决这个问题,您需要以 step-by-step 的方式取得进展。

  1. 运行 postgresql 服务器
  2. 测试使用像 psql 这样的简单客户端创建示例数据库,它应该显示服务器是否 运行 并且您是否拥有正确的 socket/port 连接和用户凭据授权
  3. 检查您的应用程序配置以查看您是否具有正确的连接和用户凭据设置

遇到过这个问题,但从未完全弄明白为什么 rails 会这样做,但下面应该可以解决它。

  1. 在终端 psql template1
  2. CREATE USER <username from config/database.yml if specified> with password '<password from config/database.yml if specified>';
  3. ALTER USER <username ...> WITH SUPERUSER;
  4. CREATE DATABASE chat_development WITH OWNER = '<username ...>';
  5. CREATE DATABASE chat_test WITH OWNER = '<username ...>';

您不需要第 2/3 步或 WITH OWNER = '<username>';,除非您在 config/database.yml 中指定 user/password。

一些常见的错误,注意我放单引号的地方,别忘了semi-colons!