我需要连接到提供一些凭据的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
实际上是通过复制现有数据库来工作的。默认情况下,它复制名为template1的标准系统数据库。因此,该数据库是创建新数据库的“模板”。如果将对象添加到template1中,这些对象将被复制到随后创建的用户数据库中。此行为允许对数据库中的标准对象集进行站点本地修改。例如,如果您在template1中安装了过程语言PL/pgSQL,它将自动在用户数据库中可用,而不会在创建这些数据库时采取任何额外的操作。
是否有一种无需指定任何数据库即可连接的方法?
发布于 2010-12-19 06:51:16
必须将连接到数据库。可以用于“维护数据库”的数据库取决于安装和后续管理。在默认安装之后,有两个数据库可以用于初始连接- "template1“和"postgres”。创建同名的新用户和数据库并使用它们是明智的。
发布于 2010-12-19 05:46:58
为什么不连接到维护数据库(通常是postgres
)。我不知道这是否管用。但我相信,无论如何,您必须查询这个数据库才能检索给定用户可用的数据库。
发布于 2010-12-19 05:35:04
正如连接所说,连接字符串中的dbname参数默认为用户参数的值。这就是为什么它使用'testuser‘。如果希望dbname为空,请尝试"... dbname='' ..."
。
https://stackoverflow.com/questions/4483139
复制