CakePHPでPostgreSQLに書き込むときは

November 22, 2007 | Web Programming,フレームワーク | Post by Tetsuya Nakanisi

CakePHPでちょっとしたWebアプリを作成していたとき。 自分のところの開発サーバで問題なく稼動、お客様サーバへ設置、という段になり。

お客様指定のサーバにアプリを設置、試験稼動。
エラー。
あれ。このサーバMySQL入っていないんですね。
PostgreSQLが入っていたので、database.phpをPostgreSQL用に書き換えて再度試験稼動。
エラー。
エラーメッセージを眺めていると

Warning: SQL Error: ERROR: invalid byte sequence for encoding "EUC_JP": 0xe381 in /some_home_directory/application_name/cake/libs/model/datasources/dbo_source.php on line 437

そんなモンEUCじゃねえ!と怒っています。
えーとつまり、phpのclient encodingがEUC-JPのまま?
どっかでpg_set_client_encodingを自前で入れろってこと??
そんじゃどこに入れるべぇか、とソースをつらつら眺めていたところ……
お?dbo_postgres.phpでsetEncodingなる関数があるじゃないですか。

$this->setEncoding($config['encoding']);

などとやっていますので、なんだ、database.phpのハッシュに'encoding'なるものを追加すればいけるのかな?
結果→あたり。

変更前


var $default = array('driver' => 'postgres',
'connect' => 'pg_connect',
'host' => 'localhost',
'login' => 'tsukui',
'password' => 'tsukui0023',
'database' => 'tsukuischedule',
'prefix' => '');


変更後


var $default = array('driver' => 'postgres',
'connect' => 'pg_connect',
'host' => 'localhost',
'login' => 'tsukui',
'password' => 'tsukui0023',
'database' => 'tsukuischedule',
'encoding'=>'utf-8',
'prefix' => '');

もしCakePHPを使う上での常識だったらお恥ずかしい限りですが。

  • SBM: 
  • このエントリーをdel.icio.usに追加する
  • このエントリをニフティクリップに追加
  • このエントリをLivedoor クリップに追加
  • このエントリをFC2ブックマークに追加
  • このエントリーをGoogleBookmark に追加
  • このエントリーをTechnorati に追加
  • POOKMARK Airlinesへ追加
  • Saafブックマークへ追加
  • このエントリーをはてなブックマークする
  • このエントリーを含むはてなブックマーク

Trackback URL for Entry

http://blog.flatbit.co.jp/btlog/mt-tb.cgi/17

Comments

まだコメントはありません。よろしければコメントをどうぞ。

Post Your Comment

左のBOXに文字を入力してください→a

Tools

  • パスワードジェネレーター

Closed Calendar

2010年1月
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

赤字がFlat Bitの休業日です。

Archives

Month
User
Category

Music

 iTunes Store(Japan)  iTunes Store(Japan)  iTunes Store(Japan)
 iTunes Store(Japan)  iTunes Music Store(Japan)  iTunes Store(Japan)

Conmpany&Service
  • Flat Bit
  • FLOG