如何指定 rails 使用哪个 postgres 副本
How to specify which postgres copy for rails to use
如何指定使用哪个版本的 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
我认为第一个来自某个时候的手动安装。第二个可能只是一些支持 copy/ignorable,第三个是自制软件安装。
如何让 rails 使用自制的 postgres 安装,即使这意味着擦除本地数据库? 只要 heroku 上的产品是instact.
几天来我一直在重新配置我的开发环境,从 sqlite 到 postgres,这是非常有问题的,因为我现在有一个生产数据库和站点,这迫使我无法进行一些代码推送在本地验证功能,但在很大程度上完全削弱了我进行任何开发的能力。
请帮帮我!
看起来问题是当数据库是由 9 创建时您正在启动 9.4.1。3.x。
Rails 使用的 posgres 版本应该是 运行 中的那个。所以如果你想在版本 9.3.x 中启动 postgres,那么你应该启动那个版本。但是您必须为该版本指定正确的路径。
你得到这些的输出是什么?
> initdb --version
> pg_ctl --version
> postgres --version
> psql --version
应该都是一样的。如果它显示 9.4.x 并且你想使用那个版本,那么你可以像这样重新初始化数据库:initdb -D /usr/local/var/postgres-4.1
然后你可以启动 postgres postgres -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
。然后确保这只是自制版本的 link。 ls -la /usr/local/bin | grep "postgres ->"
.
如果您使用的是自制软件版本,您可以 brew switch postgres 9.3.x
告诉自制软件使用该版本。然后你应该可以用 postgres -D /var/local/var/postgres
.
启动 postgres
如何指定使用哪个版本的 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
我认为第一个来自某个时候的手动安装。第二个可能只是一些支持 copy/ignorable,第三个是自制软件安装。
如何让 rails 使用自制的 postgres 安装,即使这意味着擦除本地数据库? 只要 heroku 上的产品是instact.
几天来我一直在重新配置我的开发环境,从 sqlite 到 postgres,这是非常有问题的,因为我现在有一个生产数据库和站点,这迫使我无法进行一些代码推送在本地验证功能,但在很大程度上完全削弱了我进行任何开发的能力。
请帮帮我!
看起来问题是当数据库是由 9 创建时您正在启动 9.4.1。3.x。
Rails 使用的 posgres 版本应该是 运行 中的那个。所以如果你想在版本 9.3.x 中启动 postgres,那么你应该启动那个版本。但是您必须为该版本指定正确的路径。
你得到这些的输出是什么?
> initdb --version
> pg_ctl --version
> postgres --version
> psql --version
应该都是一样的。如果它显示 9.4.x 并且你想使用那个版本,那么你可以像这样重新初始化数据库:initdb -D /usr/local/var/postgres-4.1
然后你可以启动 postgres postgres -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
。然后确保这只是自制版本的 link。 ls -la /usr/local/bin | grep "postgres ->"
.
如果您使用的是自制软件版本,您可以 brew switch postgres 9.3.x
告诉自制软件使用该版本。然后你应该可以用 postgres -D /var/local/var/postgres
.