m_b*_*_br 5 postgresql mac-os-x
我的笔记本电脑有一个小硬盘。我想加载一个大数据集。我已将整个移动/usr/local/var/postgres到外部高清,并将其符号链接回来。现在我收到这个错误,
psql: could not connect to server: Socket operation on non-socket
Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)
我现在已经找到了问题所在。更改默认数据目录会导致 Postgres 拒绝连接到服务器。在线手册对“同一目录中的配置文件”有点 [原文如此!] 不具体……
我使用的解决方案(使用 psql)是:
CREATE TABLESPACE tablespacename OWNER username LOCATION '/Path/to/Folder'
Run Code Online (Sandbox Code Playgroud)
然后,
CREATE DATABASE databasename OWNER username TABLESPACE tablespacename
Run Code Online (Sandbox Code Playgroud)
最后
psql databasename < /Path/to/databasedump.sql
Run Code Online (Sandbox Code Playgroud)
请注意此问题的未来访问者;请参阅下面 Craig Ringer 关于如何正确解决此问题的警告。
Cra*_*ger 12
请不要创建一个可移动的外部驱动器上的表空间,特别是如果你有在PostgreSQL的安装你所关心的其他数据。
如果外部驱动器丢失,那么 PostgreSQL 将无法启动,并且极难修复。
我已经提交了一个补丁,以在最新版本的手册中添加更多关于此的警告。
您第一次就有正确的想法 - 完整地移动数据目录。你只是没有遵循完整的过程。PostgreSQL 手册无法涵盖所有内容,因为它非常依赖于操作系统、版本等的详细信息。
由于您对 datadir 进行了符号链接,因此您无需更改 launchd 配置以指向新的 datadir。我会说你的问题可能是文件系统权限。在这种情况下你应该做的是打开Console.app并检查系统日志中与 PostgreSQL 启动相关的消息。您还应该检查 PostgreSQL 自己的日志文件。它还有助于:
sudo -u postgres ls /path/to/data/directory/
Run Code Online (Sandbox Code Playgroud)
确保 PostgreSQL 有权“查看”新位置的数据目录中的内容。