0

わかりました... PostgreSQL と PDO に関するすべての Q&A を調べましたが、私の質問に答えられませんでした... Google で答えを見つけるのと同じ問題です。

したがって、私はマスターの足元に質問を置きます。

MySQLのバックグラウンドから来て、PostgreSQLを使い始めたばかりです。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~

@イゴール

さて、私はさらにテストを実行し、構造を調査し、ロール、スキーマ、テーブルスペース、およびテーブルがすべて揃っていることを確認するのに約30分を費やしました...

それらはすべて整然としていて、実際に正しくセットアップされていました。

あなたが推奨するように schema.database 名を使用してみましたが、うまくいきませんでした。

それから、ずっと私を悩ませていた問題を発見しました。

どうやら、データベースをセットアップした後、すべてのインデックスを含めて40近くのテーブルがありました...私の問題はPostgreSQLでさえありませんでした。

それは、PgAdminIII と私の完全な睡眠不足の悪い組み合わせでした。

どうやら、これらのテーブルはすべて、配置される予定のデータベースの下ではなく、データベース「postgres」の下にセットアップされたようです。

私のばかげたことをお詫び申し上げます。はっきりと見ていただきありがとうございます。

正しいとマークされています。

4

1 に答える 1