Мне нужно подключиться к серверу PostgreSQL, предоставляющему некоторые учетные данные, и распечатать список доступных баз данных на этом хосте для данного пользователя.
Я пытаюсь:
<?php
$connection = pg_connect("host=localhost user=testuser password=123 connect_timeout=5");
?>
И я получаю:
Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: FATAL: database "testuser" does not exist in /var/www/test.php on line 56
Я думал, что это должно быть возможно, потому что phpPgAdmin это делает, но я посмотрел на источники phpPpAdmin и обнаружил, что они подключаются к базе данных с именем template1
.
С http://www.postgresql.org/docs/8.1/interactive/manage-ag-templatedbs.html:
CREATE DATABASE фактически работает путем копирования существующей базы данных. От
по умолчанию копирует стандартную системную базу данных с именем template1. таким образом
эта база данных является «шаблоном», из которого создаются новые базы данных. Если
Вы добавляете объекты в template1, эти объекты будут скопированы в
впоследствии созданные пользовательские базы данных. Такое поведение позволяет сайт-локально
внесение изменений в стандартный набор объектов в базах данных. За
Например, если вы установите процедурный язык PL / pgSQL в template1,
он будет автоматически доступен в пользовательских базах данных без каких-либо дополнительных
действие, предпринимаемое при создании этих баз данных.
Есть ли способ подключения без указания какой-либо базы данных?