Инициализация каталога данных для postgresql не удалась
Я попытался инициализировать каталог данных postgresql и получил такую ошибку:
[postgres@vix-db1-1 ~]$ /usr/pgsql-9.5/bin/initdb --nodename=vix-db1-1 -D /var/lib/pgsql/9.5/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.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
creating directory /var/lib/pgsql/9.5/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
creating template1 database in /var/lib/pgsql/9.5/data/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... ok
creating system views ... ok
creating cluster information ... FATAL: syntax error at or near "-" at character 16
STATEMENT: CREATE NODE vix-db1-1 WITH (type = 'coordinator');
child process exited with exit code 1
initdb: removing data directory "/var/lib/pgsql/9.5/data"
В нем написано "НЕУСТРАНИЕ: синтаксическая ошибка около или около символа 16"; но имя хоста должно иметь "-" из-за новой версии сервера.
Я пробовал делать это без имени узла, но для этого возникла другая проблема:
[postgres@vix-db1-1 ~]$ /usr/pgsql-9.5/bin/initdb -D /var/lib/pgsql/9.5/data
initdb: Postgres-XL node name is mandatory
Try "initdb --help" for more information.
[postgres@vix-db1-1 ~]$
Как мне решить эту проблему?
2 ответа
Вы должны использовать какой-то форк PostgreSQL, поскольку initdb
не имеет --nodename
параметр.
Тот, кто написал эту вилку, не очень хорошо справился с этой задачей, поскольку они забыли где-то должным образом экранировать специальные символы. Вы должны сообщить об этом как об ошибке поставщику программного обеспечения.
@anaigini Я перенесу комментарий, чтобы ответить, поскольку он сработал:
Возможно, вам придется передать имя в кавычках, чтобы оно подставлялось в запросе, используя --nodename='"vix-db1-1"'. Внешние одинарные кавычки будут использоваться оболочкой, оставив внутренние двойные кавычки для запроса.