我刚使用OS X Server将我的MacMini服务器从Lion Server升级到Mountain Lion。我在去年第一次安装Lion Server时遇到了与PostgreSQL相同的问题。
当我尝试执行任何类型的PostgreSQL终端命令时,我收到以下许多错误消息,这些消息多年来已经得到:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
当我收到错误时,我试图更改_postgres的密码。我尝试了几个命令,但得到了同样的错误。我只是重新启动了我的服务器,但没有运气。我以root身份登录以查看/ var / pgsql_socket,该文件夹为空。文件夹/ var / pgsql_socket_alt也是空的。
我在网上查了一下这个。然而,我所阅读的所有解决方案,包括Stack Overflow,都建议删除并重新安装PostgreSQL。我不知道,但这似乎不是一个合理的选择,因为Server App上的几个选项使用PostgreSQL。我联系了Apple Enterprise Support(没有协议),我被告知我的问题必须由开发人员解决,这将花费695美元。
我现在有一个网站,因为我无法重建它。此时我不知道在哪里寻求帮助。我会继续在线查看我是否能找到一些东西。但是我希望有人可以快速给我一个答案,这样我就可以重建我的数据库了。
更新时间:12/13/2012 15:33 GMT-6
这是ps auwwx | grep postg:
的输出_postgres 28123 0.0 0.1 2479696 7724 ?? Ss 3:01PM 0:00.04 /Applications/Server.app/Contents/ServerRoot/usr/bin/postgres_real -D /Library/Server/PostgreSQL For Server Services/Data -c listen_addresses= -c log_connections=on -c log_directory=/Library/Logs/PostgreSQL -c log_filename=PostgreSQL_Server_Services.log -c log_line_prefix=%t -c log_lock_waits=on -c log_statement=ddl -c logging_collector=on -c unix_socket_directory=/Library/Server/PostgreSQL For Server Services/Socket -c unix_socket_group=_postgres -c unix_socket_permissions=0770
server1 28216 0.0 0.0 2432768 620 s000 R+ 3:02PM 0:00.00 grep postg
_postgres 28138 0.0 0.0 2439388 752 ?? Ss 3:01PM 0:00.01 postgres: stats collector process
_postgres 28137 0.0 0.0 2479828 1968 ?? Ss 3:01PM 0:00.00 postgres: autovacuum launcher process
_postgres 28136 0.0 0.0 2479696 544 ?? Ss 3:01PM 0:00.00 postgres: wal writer process
_postgres 28135 0.0 0.0 2479696 732 ?? Ss 3:01PM 0:00.01 postgres: writer process
_postgres 28134 0.0 0.0 2479696 592 ?? Ss 3:01PM 0:00.00 postgres: checkpointer process
_postgres 28131 0.0 0.0 2439388 368 ?? Ss 3:01PM 0:00.00 postgres: logger process
更新时间:12/13/2012 18:10 GMT-6
经过激烈的网络搜索后,发现了这个视频。我能够使PostgreSQL工作并删除错误。我可以使用pgadmin和phppgadmin连接。由于纯粹的挫败感,我正要回到Lion Server。现在我不需要。
答案 0 :(得分:281)
我能够将以下内容添加到我的.bash_profile中以防止错误:
export PGHOST=localhost
这有效because:
如果省略主机名,psql将通过Unix域套接字连接到本地主机上的服务器,或通过TCP / IP连接到没有Unix域套接字的机器上的localhost。
您的操作系统支持Unix域套接字,但psql
所需的PostgreSQL的Unix套接字不存在或位于与预期不同的位置。
明确指定主机名为localhost
强制psql
使用TCP / IP。设置环境变量PGHOST
是实现这一目标的方法之一。它记录在psql's manual。
答案 1 :(得分:31)
尝试在控制台粘贴:
$ mkdir /var/pgsql_socket/
$ ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/
答案 2 :(得分:23)
我能够通过简单地填写127.0.0.1来解决PostgreSQL主机地址而不是将其留空。 (Django示例)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'database_name',
'USER': 'database_user',
'PASSWORD': 'pass',
'HOST': '127.0.0.1',
'PORT': '',
}
}
答案 3 :(得分:10)
打开' postgresql.conf'在你最喜欢的编辑器。寻找变量' unix_socket_directories',它很可能看起来像这样:
unix_socket_directories = '/private/tmp/'
将行更改为:
unix_socket_directories = '/var/pgsql_socket/'
注意,如果您希望多个目录中的套接字文件用逗号分隔它们。
答案 4 :(得分:7)
正如其他人在评论中所提到的,这个问题的一个非常简单的解决方案是在数据库配置中声明数据库'host'。添加此答案只是为了让读者更清楚一点。
例如,在Ruby on Rails应用程序中,编辑/config/database.yml:
development:
adapter: postgresql
encoding: unicode
database: database_name
pool: 5
host: localhost
注意:添加的最后一行用于指定主机。在更新到Yosemite之前,我从不需要以这种方式指定主机。
希望这有助于某人。
干杯
答案 5 :(得分:5)
检查数据库的状态:
service postgresql status
如果数据库未运行,请启动db:
sudo service postgresql start
答案 6 :(得分:5)
一个更简单的解决方案(感谢http://daniel.fone.net.nz/blog/2014/12/01/fixing-connection-errors-after-upgrading-postgres/)。我升级到postgres 9.4。在我的情况下,我需要做的一切(经过一天的谷歌搜索,而不是成功)
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
printf("Hello world\n");
// read an image
Mat imgInput = imread("a.png");
// create image window named "My Image"
namedWindow("My Image");
// Convert to gray if necessary
if (imgInput.channels() == 3)
cv::cvtColor(imgInput, imgInput, CV_BGR2GRAY);
// Apply Canny edge detector
Mat imgContours;
double thresh = 105; // try different values to see effect
Canny(imgInput, imgContours, 0.4*thresh, thresh); // low, high threshold
// show the image on window
imshow("My Image", imgInput);
// wait for xx ms (0 means wait until keypress)
waitKey(5000);
return 0;
}
重启webrick,完成!
答案 7 :(得分:4)
你能查看postgresql.conf文件吗?
你的postgres正在运行什么端口?
我认为它没有在端口5432上运行。如果没有将其更改为5432
终端使用时的OR
psql -U postgres -p YOUR_PORT_NUMBER database_name
答案 8 :(得分:2)
我和Django有这个问题。
通过明确将主机名设置为“localhost”来修复它。
答案 9 :(得分:2)
我通过这样做来实现:
dpkg-reconfigure locales
并选择您喜欢的区域设置
pg_createcluster 9.5 main --start
(9.5是我的postgresql版本)
/etc/init.d/postgresql start
然后它说出来了!
sudo su - postgres
psql
答案 10 :(得分:1)
对于RubyOnRails应用,添加localhost
如果您使用自定义Postgresql版本
# config/database.yml
default: &default
host: localhost
答案 11 :(得分:1)
使用以下代码检查postgres服务器是否正在运行
sudo service postgresql status
如果postgres服务器处于非活动状态,请输入以下命令。
sudo service postgresql start
答案 12 :(得分:1)
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket"/var/pgsql_socket/.s.PGSQL.5432"?
我一直遇到上述错误,上述解决方案都没有为我工作。最后,以下解决方案解决了我在Mac OS X上的问题
使用brew安装postgres
brew install postgres
安装brew服务
brew tap homebrew/services
将postgres作为后台服务启动
brew services start postgresql
手动停止postgres
brew services stop postgresql
我们也可以使用brew服务重启Postgres
brew services restart postgresql
答案 13 :(得分:1)
apt-get install postgres-xc-client
apt-get install postgres-xc
答案 14 :(得分:1)
如果您遇到上述问题,但已从Yosemite升级,则需要采用不同的方法,因为升级解决方案可能会破坏某些文件。更多详情请见`pg_tblspc` missing after installation of latest version of OS X (Yosemite or El Capitan)。
答案 15 :(得分:0)
首先删除已安装的postgres:
sudo apt-get purge postgr*
sudo apt-get autoremove
然后安装'synaptic':
sudo apt-get install synaptic
sudo apt-get update
然后安装Postgres
sudo apt-get install postgresql postgresql-contrib
答案 16 :(得分:0)
我刚刚创建了一个新的集群,对我有用,我正在使用(PostgreSQL)9.3.20:
sudo pg_createcluster 9.3 main --start
答案 17 :(得分:0)
文件权限对Mac OS拥有的Postgres数据库有限制。重新启动或重新启动Postgres后会重置这些权限:例如serveradmin start postgres。
因此,暂时重置权限或所有权:
sudo chmod o+rwx /var/pgsql_socket/.s.PGSQL.5432
sudo chown "webUser" /var/pgsql_socket/.s.PGSQL.5432
权限重置不安全,因此请安装您拥有的数据库版本以供解决方案使用。
答案 18 :(得分:0)
计算机冻结并自行重新启动后,出现此错误。在此页面上找不到我的解决方案,而是在另一个具有相同错误psql: could not connect to server: No such file or directory (Mac OS X)的非常受好评 SO问题上。答案:只需删除此文件/usr/local/var/postgres/postmaster.pid
,然后brew services restart postgresql
就可以了。在执行此操作之前,请注意有关链接后答案的警告,有关该信息会杀死postgres进程,否则您可能会永久破坏数据库。
答案 19 :(得分:0)
我花了一段时间,但在完成提供的建议和其他网络搜索后,我终于能够完成这项工作。我使用了Mactasia创建的以下YouTube视频中的信息:
http://www.youtube.com/watch?v=y1c7WFMMkZ4
当我这样做时,我看到了.lock作为扩展名的文件。但是,当我使用PostgreSQL恢复使用Rails应用程序时,我尝试启动Rails服务器时仍然出现错误。这次我得到了一个权限被拒绝的错误。这是我记得我不仅要更改plist中的listen_addresses而且还必须将unit_socket_permissions更改为0777.我还以root身份登录以更改var / pgsql_socket文件夹的权限,我可以在该文件夹中访问它用户级别。 Postgres现在工作正常。我正在从SQL备份重新加载数据。
我不明白的是,当我打开维基时,当我做了一个sudo serveradmin fullstatus postgres时,据说PostgreSQL正在工作,但我仍然得到了错误。哦,好吧。