この記事の所要時間: 約 2分12秒
あ,そうだ。PostgreSQL だともうなんだか色々エラーが出てるので諦めちゃいました……。
同じエラーかどうか分かりませんが、同じような現象があったので。
CakePHP1.2.0.5875 pre-betaでPostgreSQLに接続しようとすると以下のようなエラーが出ました。
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]
class DATABASE_CONFIG { var $default = array( 'driver' => 'postgres', 'persistent' => false, 'host' => 'localhost', 'port' => '', 'login' => '1x1', 'password' => 'pass', 'database' => 'inquiry', // 'schema' => '', 'schema' => 'public', <--- schema 'prefix' => '', 'encoding' => '' ); }
なおschemaパラメータを指定しない場合もpublicが使われます(厳密に言うとDboPostgresで定義されている値が使われます。)つまりschemaパラメータを削除してしまう手もありますが、内部動作は変わる可能性があるので、database.phpで明確に指定しておいた方が無難でしょう。
- Newer: JavaScript第5版読書会#1に参加しました。
- Older: あるはずのない「パチ(ンコ|スロ)での必勝法」が実はあったという話
トラックバック:0
- このエントリーのトラックバックURL
- /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