【备忘录】关于在Rails6中执行rails db:create时无法连接到PostgreSQL的解决方法
这是关于什么的对话?
使用Rails6开发新应用时,在尝试使用本地的PostgreSQL时遇到了错误,以下是解决错误的过程。由于我是第一次使用PostgreSQL,对于错误的根本原因和规范是否能够理解并解决感到困惑。通过阅读错误信息并尝试解决,我大致明白了陷入了何种状态的错误,但在某一部分遇到了障碍,于是向认识的软件工程师朋友寻求了帮助。
发生的事情
在使用`rails _6.0.3.2_ new memo-app –database=postgresql`命令创建应用并指定了PostgreSQL数据库时,
当尝试使用`rails db:create`命令创建数据库时,遇到了下面的错误。
$ rails db:create
could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Couldn't create 'APP_NAME_development' database. Please check your configuration.
rails aborted!
PG::ConnectionBad: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
***
简而言之,无法连接到PostgreSQL,无法创建数据库。
我做了以下事情:①重新启动了PostgreSQL并确认了状态。
$ brew services restart postgresql
Stopping `postgresql`... (might take a while)
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)
==> Successfully started `postgresql` (label: homebrew.mxcl.postgresql)
执行后,重新启动postgreSQL。
$ brew services list
我确认了状况。
Name Status User Plist
postgresql error yoshi /Users/yoshi/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
状态仍然出错。当然,即使继续执行,最初的错误也会再次显示出来。
在本地环境中有postgreSQL,并且可以启动,但是无法连接,这一点可以在这里看到。
我所做的事情2。
因为我在这里遇到了困难,所以向我作为软件工程师的前辈寻求了一句建议。
我收到了如下建议:尝试确认一下数据目录的状况。
$ postgres -D /usr/local/var/postgres
在确认后
FATAL: database files are incompatible with server
***
DETAIL: The data directory was initialized by PostgreSQL version 12,
which is not compatible with this version 13.1.
有一个句子出现了:DB文件的兼容性存在问题。
由于Ver12初始化的当前数据目录与Ver13.1不兼容,因此无法使用。
这就是意思。
最后的结果
如果这样的话,那不就该更新一下吗?无论如何,这是一个假设。
在使用brew postgresql-upgrade-database进行升级后,
通过brew services restart postgresql重新启动。
再次尝试创建DB时,
$ rails db:create
Created database 'memo_app_development'
Created database 'memo_app_test'
由于成功创建了无事DB,问题已经解决。
根本原因是在某个时候创建的Ver12的DB中存在问题。
可能是由于不明所以,不小心输入了奇怪的命令导致了这种情况…。