妄想日記 by 妄想エンジン


drupal で DB に Postgresql 8.3 以降を使っていて、検索が動かない場合の対処方法

drupal で DB に Postgresql 8.3 以降を使っていて、検索が動かない場合の対処方法について。

これは何?
drupal を使っていて、データベースに Postgresql 8.3 以降を使っていると検索がうまく動きません。エラーログを見れば分かるのですが、Postgresql 8.3 以降から暗黙の型変換が行われなくなったため、きちんと型を合わせてあげる必要があります。

対策:
modules/node/node.module の 1238行目
$ranking[] = '%d * POW(2, (GREATEST(MAX(n.created), MAX(n.changed), MAX(c.last_comment_timestamp || 1) - %d) *6.43e-8)';

$ranking[] = '%d * POW(2, (GREATEST(MAX(n.created), MAX(n.changed), (MAX(c.last_comment_timestamp)::text || \'1\')::numeric) - %d) *6.43e-8)';
に修正してあげればおっけ。要は明示的に型をあわせてあげるだけ。
ただしこれ、Mysqlでどうなるかは未確認です。あと、コアモジュールをいじるのはルール違反だよね。そしてほんとはFOFAに則って全ての修正をかけるべきなのだが。

まあ、これでこの日記の検索も動くようになりました。めでたしめでたし。

検索用キーワード:
drupal, 検索, postgresql

ツイート

本日のPHPメモ

半日どっぱまったのでメモ。

imap_open を使って、imapサーバに接続するさいに、サーバ側で中途半端にtls に対応していると、tls をつかっての接続を試みて、失敗してしまうことがある。
そのため、強制的に tls を使わないで接続するように /notls オプションをつけないといけません。

これに気がつかなくて、何度も何度もテストして繋がらなくて、泣きそうになりました。
泣かないけど。

ツイート
|top |アフィリエイト |windowsネタ |料理メモ |コンタクト |twitter |
さわやかなエロスを目指す--妄想エンジン ©1996-2022
コンテンツ配信