PostgreSQL" initdb" Linux上的(数据库初始化)

时间:2015-08-17 02:17:02

标签: postgresql postgresql-9.2 centos7

我正致力于在PostgreSQL 9.x中创建一个在Linux系统上运行的数据库集群(单个数据库)(CentOS - RedHat - Fedora)。我已经安装了正确的PostgreSQL软件包(服务器和客户端)但是,我无法创建数据库并获得某种类型的初始化依赖项错误:总线错误/退出代码135 。我已将用户更改为" postgres"与" su postgres"然后尝试使用" initdb"初始化数据库。 (这可能是问题)

Installed: postgresql-libs-9.2.13-1.el7_1.x86_64
Installed: postgresql-9.2.13-1.el7_1.x86_64
Installed: postgresql-server-9.2.13-1.el7_1.x86_64

$ initdb -D /usr/local/pgsql/data

http://www.postgresql.org/docs/9.2/interactive/creating-cluster.html

错误:

$ initdb -D /usr/local/pgsql/data
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

creating directory /usr/local/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 32MB
creating configuration files ... ok
creating template1 database in /usr/local/pgsql/data/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... sh: line 1: 12616 Bus error               (core dumped) "/usr/bin/postgres" --single -F -O -c search_path=pg_catalog -c exit_on_error=true template1 > /dev/null
child process exited with exit code 135

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

安装PostgreSQL(服务器和客户端工具)之后,需要运行以下命令作为ROOT(" su")。关键步骤是启动" service postgresql initdb"并让它初始化你的PostgreSQL数据库。

如果您有任何错误,则需要删除空安装"数据"目录并仔细阅读所有日志文件。

# service postgresql initdb
# systemctl enable postgresql
# systemctl start postgresql

执行上述操作后,验证postgres是否在/ var / lib / pgsql中,并使用" ps -ef |运行进程。 grep postgres" (它在5432号港口)

如果您遇到任何其他问题,可能需要创建或修改postgres用户/密码或清理postgres数据目录。

答案 1 :(得分:0)

如果从软件包安装,则应使用软件包提供的方法来创建数据库。对于README.rpm-dist中记录的PDGD RPMs(来自http://yum.postgresql.org/):

/usr/pgsql-9.4/bin/postgresql94-setup initdb

然而,你真正得到的错误不应该发生。它表明硬件不兼容或低级别问题,如不兼容的C库。也许您从其他操作系统或版本强制安装了RPM?

<强>更新

似乎很可能是C库不兼容。也许RHEL和CentOS之间存在问题?还是版本相关?这是动态链接器中的错误。 dl-lookup.c将为glibc/elf/dl-lookup.c,并且在符号查找期间似乎崩溃。所以这里有一些非常不稳定的东西,比如二进制文件中的损坏的符号哈希表,或者二进制文件和使用的动态链接器之间的不兼容性。或者是内存故障,磁盘故障,CPU缓存问题或其他硬件错误。

如果重新启动让它消失,我会非常怀疑硬件。如果没有,你可能会在系统上有一些非常不稳定的东西,比如一些第三方解包安装程序覆盖了原来的C库/动态链接器,这种奇怪。