CakePHPでPostgreSQLへ接続する方法

こんにちは!ぐちです。

CakePHP × PostgreSQL

PHPのフレームワークであるCakePHPですがデフォルトではMySQLへの接続情報が設定されています。システムによってはPostgreSQLへ繋ぐ必要がある場合もありますよね。備忘録としてdatabase.phpの設定をご紹介します。

database.php

database.phpは下記のようにします。

var $postgres = array(
    'datasource' => 'Database/Postgres',
    'persistent' => 'false',
    'host' => 'localhost',
    'port' => '5432',
    'login' => 'user_name',
    'password' => 'password',
    'database' => 'db_name',
    'schema' => 'public',
    'prefix' => '',
    'encoding' => 'utf8'
);

MySQLはデフォルトで設定されている値を書き換えれば簡単に繋ぐことができますがPostgreSQLの場合は下記の2つを指定しないと以下のようなエラーになります。

  • post
  • schema

Error: Table posts for model Post was not found in datasource default.

Windowsのローカル環境

PostgreSQLへ繋ぐDDLが必要になります。下記のDDLが壊れていないか存在するかを確認しましょう。

  • php_pdo_pgsql.dll
  • php_pgsql.dll

Error: Database connection “Postgres” is missing, or could not be created.