Home > CakePHP | PHP > CakePHP 1.2でPostgreSQLを使うとエラーが出る

CakePHP 1.2でPostgreSQLを使うとエラーが出る

  • 2007-11-19 (月) 8:56
  • CakePHP | PHP
  • このエントリーをはてなブックマークに追加
この記事の所要時間: 212

あ,そうだ。PostgreSQL だともうなんだか色々エラーが出てるので諦めちゃいました……。

1.2を試してみました - まゆの日記

同じエラーかどうか分かりませんが、同じような現象があったので。

CakePHP1.2.0.5875 pre-betaでPostgreSQLに接続しようとすると以下のようなエラーが出ました。

PHP:
  1. Warning (2): pg_query() [function.pg-query]: Query failed: ERROR:  syntax error at end of input at character 20 [CORE\cake\libs\model\datasources\dbo\dbo_postgres.php, line 123]

原因は[app/config/database.php]に追加された「schema」パラメータです。このパラメータを使うとPostgreSQLにてschemaを指定できるのですが、デフォルトの設定では空文字になっており、それをそのままDBへ発行するのでSQLエラーとなります。

解決策としてはschemaパラメータにschemaを指定します。テーブル生成時等にschemaを指定しなければデフォルトで「public」になります。個別にschemaを指定している場合はそれを設定します。

[app/config/database.php]

PHP:
  1. class DATABASE_CONFIG {
  2.     var $default = array(
  3.         'driver' => 'postgres',
  4.         'persistent' => false,
  5.         'host' => 'localhost',
  6.         'port' => '',
  7.         'login' => '1x1',
  8.         'password' => 'pass',
  9.         'database' => 'inquiry',
  10. //    'schema' => '',
  11.         'schema' => 'public',   <--- schema
  12.         'prefix' => '',
  13.         'encoding' => ''
  14.     );
  15. }

なおschemaパラメータを指定しない場合もpublicが使われます(厳密に言うとDboPostgresで定義されている値が使われます。)つまりschemaパラメータを削除してしまう手もありますが、内部動作は変わる可能性があるので、database.phpで明確に指定しておいた方が無難でしょう。

トラックバック:0

このエントリーのトラックバックURL
http://www.1x1.jp/blog/2007/11/cakephp_12_postgresql_schema_error.html/trackback
Listed below are links to weblogs that reference
CakePHP 1.2でPostgreSQLを使うとエラーが出る from Shin x blog

Home > CakePHP | PHP > CakePHP 1.2でPostgreSQLを使うとエラーが出る

検索
フィード
メタ情報

Return to page top