好的...查看了有关 PostgreSQL 和 PDO 的所有问答,但没有运气回答我的问题...通过 Google 找到答案的同样问题。
因此,我将我的问题放在大师们的脚下。
我刚开始使用 PostgreSQL,来自 MySQL 背景。我正在使用 PDO 连接到它,并使用 pgAdminIII 来管理数据库本身。
如何连接到已卡在已定义表空间中的表?
$db = new PDO("pgsql:host=127.0.0.1;user=pageserver;password=myPassword;dbname=pageserver;");
导致:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[08006] [7] FATAL: database "pageserver" does not exist' in ~stacktrace~
在任何人提到之前,当然,我应该使用 try/catch,我会随着这进一步发展......但现在这个错误是有帮助的。
这个数据库确实存在,但是我在这个项目中使用的所有数据库都放在一个表空间中,以将数据库保存在特定的子文件夹中。
我假设这是我的问题所在;到目前为止,我在 PDO 文档中没有看到任何关于表空间的引用。
PostgreSQL 的文档显然对表空间有很长的篇幅,但没有参考 PDO 语法来连接它们。
我希望它很简单,例如:
$db = new PDO("pgsql:host=127.0.0.1;tablespace=system;user=pageserver;password=MyPassword;dbname=pageserver;");
但这会导致:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[08006] [7] invalid connection option "tablespace"' in ~stacktrace~
@伊戈尔
好吧,我只花了大约半个小时进行进一步的测试,探索结构,并确保角色、模式、表空间和表都符合要求……
它们都井井有条,并且实际上设置正确。
我尝试按照您的建议使用 schema.database 名称,但是没有用。
然后我发现了一直困扰我的问题。
显然,在建立数据库之后,将近 40 个表,包括所有索引……我的问题甚至不是 PostgreSQL。
这是 PgAdminIII 和我完全缺乏睡眠的邪恶组合。
显然,所有这些表都是在 db 'postgres' 下设置的,而不是在它们应该放置在其中的 db 下。
我为我的白痴道歉,并感谢你看清了它。
标记为正确。