postgresql 如何指定使用哪个postgres copy for rails

enyaitl3  于 2022-12-23  发布在  PostgreSQL
关注(0)|答案(1)|浏览(118)

如何指定使用哪个版本的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,这是非常有问题的,因为我现在有一个生产数据库和网站,这迫使我做一些代码推送,而不能在本地验证功能,但在大多数情况下,完全削弱了我做任何开发的能力。
请救救我!

ncgqoxb0

ncgqoxb01#

看起来问题是您在9.3.x创建数据库时启动了9.4.1。
Rails使用的postgres版本应该是正在运行的版本,所以如果你想在9.3.x版本中启动postgres,那么你应该启动那个版本,但是你必须为那个版本指定正确的路径。
你能得到什么样的输出?

> initdb --version
> pg_ctl --version
> postgres --version
> psql --version

它应该都是一样的。如果它说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了。

相关问题