如何指定使用哪个版本的postgres rails?当我运行puma
并转到localhost:3000
时,我得到一个错误
PG::ConnectionBad
fe_sendauth: no password supplied
我认为正在使用的副本可能是手动安装9.3,就像我运行:
/usr/local/Cellar/postgresql/9.4.1/bin/pg_ctl -D /usr/local/var/postgres start
我得到错误:
stgres start
server starting
LOG: skipping missing configuration file "/usr/local/var/postgres/postgresql.auto.conf"
FATAL: database files are incompatible with server
DETAIL: The data directory was initialized by PostgreSQL version 9.3, which is not compatible with this version 9.4.1.
我在系统中发现了三个pg_hba.conf
副本:
/Library/PostgreSQL/9.3/data/pg_hba.conf
/Users/lasernite/Library/Application Support/Postgres/var-9.4/pg_hba.conf
/usr/local/var/postgres/pg_hba.conf
第一个我相信是从手动安装在某个时候。第二个可能只是一些支持的副本/可忽略的,第三个是自制安装。
- 我怎样才能让rails使用自制的postgres安装,即使这意味着要擦除本地数据库?**只要heroku上的产品是即时的,这是可以的。
几天来,我一直在重新配置我的开发环境,从sqlite到postgres,这是非常有问题的,因为我现在有一个生产数据库和网站,这迫使我做一些代码推送,而不能在本地验证功能,但在大多数情况下,完全削弱了我做任何开发的能力。
请救救我!
1条答案
按热度按时间ncgqoxb01#
看起来问题是您在9.3.x创建数据库时启动了9.4.1。
Rails使用的postgres版本应该是正在运行的版本,所以如果你想在9.3.x版本中启动postgres,那么你应该启动那个版本,但是你必须为那个版本指定正确的路径。
你能得到什么样的输出?
它应该都是一样的。如果它说9.4.x,而你想使用那个版本,那么你可以这样重新初始化数据库:
initdb -D /usr/local/var/postgres-4.1
,然后你可以启动postgrespostgres -D /usr/local/var/postgres-4.1
。这样做,你可能会丢失你的本地数据库,因为它听起来像是9.3.x创建的数据。或者,如果这些输出9.3.x,那么您应该只能够使用命令,而不需要二进制文件的完整路径:
postgres -D /usr/local/var/postgres
.如果你使用的是9.4.x并且你想继续使用9.3.x,那么试试
which postgres
,它可能指向/usr/local/bin
,然后确保它只是一个指向自制版本ls -la /usr/local/bin | grep "postgres ->"
的链接。如果你使用的是homebrew版本,你可以用
brew switch postgres 9.3.x
命令homebrew使用那个版本,然后你就可以用postgres -D /var/local/var/postgres
启动postgres了。