PostgreSQLデータベースはオープンソースのプロダクツであり、無料で
使用可能できます。Postgresは元々UCB(カリフォルニア大学バークレイ校)
コンピュータ・サイエンス学部で開発されたものです。このPostgresは、
現在、いくつかの商用データベースにおいてサポートされつつあるオブジェク
トリレーショナルデータベース的概念の多くの先駆けでした。
Postgresは、SQL92/SQL3言語サポート、トランザクションインテグリティ、
拡張可能な型を提供しています。PostgreSQLは、Postgresのオリジナルの
バークレイ・コードのオープンソースの子孫にあたります。
PostgreSQLサポートを使用するには、PostgreSQL
6.5以降が必要です。 PostgreSQL
7.0以降ではPostgreSQLモジュールの全ての機能を使用可能
です。PostgreSQLは、マルチバイト文字エンコーディングを含む多くの
文字エンコーディングをサポートしています。現在のバージョン及び PostgreSQLに関するより詳細な情報は、
http://www.postgresql.org/
で入手可能です。
PostgreSQLサポートを利用可能とするには、PHPコンパイル時に
--with-pgsql[=DIR]
を指定することが必要です。 共有オブジェクトモジュールが利用可能な場合、
php.ini
の
extension
ディレクティブ または
dl()
関数によりPostgreSQLモジュール をロードすることが可能です。
これらの関数の動作は、
php.ini
の設定により変化します。
表 1PostgreSQL設定オプション
名前 | デフォルト | 変更の可否 |
---|---|---|
pgsql.allow_persistent | "1" | PHP_INI_SYSTEM |
pgsql.max_persistent | "-1" | PHP_INI_SYSTEM |
pgsql.max_links | "-1" | PHP_INI_SYSTEM |
pgsql.auto_reset_persistent | "0" | PHP_INI_SYSTEM |
pgsql.ignore_notice | "0" | PHP_INI_ALL |
pgsql.log_notice | "0" | PHP_INI_ALL |
以下に設定ディレクティブの簡単な説明を示します。
警告 |
|
警告 | ||||||||||||||||||||||||||||||||||||||||||||
|
全ての関数が全ての構築環境でサポートされるわけではありません。サ
ポートされる関数は、使用するlibpq(PostgreSQLのCクライアントインター
フェイス)のバージョンとlibpqのコンパイル方法に依存します。足りな
い関数がある場合、libpqはその関数を必要とする機能をサポートしませ ん。
接続するPostgreSQLサーバーよりも新しいlibpqを使用することも重要で
す。使用するlibpqのバージョンがPostgreSQLサーバが期待するよりも古
い場合、問題を生じる可能性があります。
バージョン6.3(1998/3/2)以降、PostgreSQLはUNIXドメインソケットを
使用しています。これらの新しいコネクションの使用例を以下に示す表に 示します。このソケットは
/tmp/.s.PGSQL.5432
に あります。このオプションは
postmaster
に対して'- i'フラグを指定することで有効となります。これは "Unixドメインソケッ
ト以外のTCP/IPソケットもlisten する"という意味です。
表 3postmasterとPHP
postmaster | PHP | ステータス |
---|---|---|
postmaster | pg_connect("dbname=MyDbName"); | OK |
postmaster -i | pg_connect("dbname=MyDbName"); | OK |
postmaster | pg_connect("host=localhost dbname=MyDbName"); | Unable to connect to PostgreSQL server: connectDB() failed: Is the postmaster running and accepting TCP/IP (with -i) connection at 'localhost' on port '5432'? in /path/to/file.php3 on line 20. |
postmaster -i | pg_connect("host=localhost dbname=MyDbName"); | OK |
PostgreSQL サーバへの接続は、以下のようにコマンド文字列の中に
値の組を羅列することにより、確立することができます。
$conn = pg_Connect("host=myHost
port=myPort tty=myTTY options=myOptions dbname=myDB
user=myUser password=myPassword");
以前の構文:
$conn = pg_connect ("host", "port",
"options", "tty", "dbname")
は古い構文であり、推奨されません。
環境変数は、PostgreSQLサーバ/クライアントの動作に影響を与えます。
例えば、PostgreSQLモジュールは、ホスト名が接続文字列で省略された場
合、環境変数PGHOSTを探します。サポートされる環境変数は、バージョン
毎に異なります。詳細は、PostgreSQLプログラマ用マニュアル(libpq -
環境変数)を参照下さい。
適切なユーザ用に環境変数が設定されていることを確認して下さい。
カレントのプロセスで利用可能な環境変数を確認するには、
$_ENV
または
getenv()
を使用して下さい。
これらの定数は、この拡張モジュールで定義されており、
この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー
ドされるかのどちらかの場合のみ使用可能です。
PostgreSQL
7.1.0から、textデータ型の最大サイズは1GBとなっています。
古いPostgreSQLのtextデータ型はブロックサイズ(デフォルトは8KB、最大
32KBをコンパイル時に定義可能)の制限を受けていました。
ラージオブジェクト(lo)インターフェースを使用するには、そのクエリーを
トランザクション・ブロックの中に入れてやる必要があります。 トランザクション・ブロックは
BEGIN
で始まり、 そのトランザクションが有効な場合は
COMMIT
または
END
で終わります。トランザクションが失敗した場合、 そのトランザクションは
ROLLBACK
または
ABORT
により閉じる必要があります。