用Terminal安装PostgreSQL和`createdb`

时间:2019-05-06 02:45:54

标签: postgresql terminal homebrew

通过PostgreSQLterminal安装Homebrew后...

➜〜brew链接postgresql

Warning: Already linked: /usr/local/Cellar/postgresql/11.2_1: 3,186 files, 35.3MB

To relink: brew unlink postgresql && brew link postgresql

➜〜brew服务重新启动PostgreSQL

Successfully stopped postgresql (label: homebrew.mxcl.postgresql)

Successfully started postgresql (label: homebrew.mxcl.postgresql)

➜〜createdb'test'

createdb: could not connect to database template1: could not connect to server: No server file or directory

Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

我希望能够严格从终端运行,而不必使用PSequel GUI ...

谢谢

1 个答案:

答案 0 :(得分:0)

已解决

我的主要问题是:

➜〜createdb'test'

createdb: could not connect to database template1: could not connect to server: No server file or directory  
Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

此问题已通过以下方式简单解决:

➜〜postgres -D / usr / local / var / postgres

调用了数据库目录...

2019-05-06 14:20:37.367 EDT [41854] LOG:  listening on IPv6 address "::1", port 5432  
2019-05-06 14:20:37.367 EDT [41854] LOG:  listening on IPv4 address "127.0.0.1", port 5432  
2019-05-06 14:20:37.367 EDT [41854] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"  
2019-05-06 14:20:37.384 EDT [41854] LOG:  database system is ready to accept connections

保持运行,并在终端上打开新标签页:

➜〜createdb'test'

➜〜psql'测试'

psql (11.2)

Type "help" for help.

test=#

在调试过程中还有其他用途:

删除旧的数据库文件(这很危险)

➜〜rm -rf / usr / local / var / postgres

跟进

➜〜initdb / usr / local / var / postgres

initdb不用于创建“新数据库”

As Documented in the Manual,您需要它来创建“集群”或“数据目录”,然后存储使用createdb创建的数据库

手册引用:

  

在执行任何操作之前,必须初始化磁盘上的数据库存储区域。我们称其为数据库集群。 (SQL标准使用术语目录集群。)数据库集群是由运行中的数据库服务器的单个实例管理的数据库的集合

     

[...]

     

就文件系统而言,数据库集群是一个目录,所有数据都将存储在该目录下。我们称其为数据目录或数据区域

简而言之:initdb在硬盘上创建必要的目录布局,以便能够创建和管理数据库。

这是Postgres服务器安装过程的必要部分。