2010/10/24(日)postgreSQL にて、initdb時と違う文字コードで DB 生成

2017/10/12 4:10 サーバ運営・管理
最新の postgreSQL は、 9.0。
しかし、当方では検証を終えていないので、8.4.x を使用しています。

UTF-8 なDBを作成しようと、
createdb -U hoge -E utf-8 exampledb

としたところ、
createdb: database creation failed:
ERROR: new encoding (UTF8) is incompatible with the encoding of
the template database (EUC_JP)
HINT: Use the same encoding as in the template database,
or use template0 as template.

※見やすいように適当に改行しています。
 実際の表示体裁は、画面幅一杯で折り返して表示します。

という、横文字エラーメッセージ出て作成できません。
散々既出のようですが、メモ代わりということで。。
横文字は解読が苦手orz だが、いろいろサイトを訪ねあたってみると、どうも、template0 を使って生成しろ、ということらしい。。

当方では、initdb (サーバに初期化データベースをインストール)時に、文字コードを EUC-JP にしました。こんな感じ:
initdb -D /db --encoding=EUC_JP --locale=C

この場合、EUC-JP 以外の文字コードでDBを生成する時はこうしないといけないようです。
createdb -U hoge -E utf-8 -T template0 exampledb

これで何事も無かったかのように UTF-8 なDBが生成できました。
何でこんなことになったのかは、知りません。orz

2010/10/21(木)adiary は、ModPerl::Registry ではまともに動作しない

2017/10/12 4:08 サーバ運営・管理
adiary は、AGPLv3ライセンスで提供される、オープンソースのブログシステムです。
携帯電話閲覧にも対応し、wiki も意識しているようです。
記事保存DBに postgreSQL が利用できます。
利用価値の高いソフトウェアです。
Perl(5.6以上のバージョンが必要)で動作し、Apache2 のWorker MPM、mod_perl2 対応としています。

adiary の場合、このmod_perl2 対応というのが曲者。Apache側の設定を、以下のようにしないと、まともに動作しません:

<Directory "*******">
Options ExecCGI
SetHandler perl-script
PerlResponseHandler ModPerl::PerlRun
PerlOptions +ParseHeaders

Order allow,deny
Allow from all
</Directory>

ModPerl::Registry は、1回目の実行で、コード解析結果をバイナリでメモリ上に保持しておき、高速化を図るモード。それ故、200% - 2000% の高速化になるのです。

ModPerl::PerlRunは、Perl インタプリタをメモリ上に保持し、実行の度にコード解析して実行するモード。このモードでは、数10ms 実行時間が短くなる程度。

ちなみに、mod_perl を無効にしても、勿論、きちんと動作します。
変数の初期化を端折っていると、このような不可解な現象になるのです。
perl では、変数宣言しなくても、勝手に未定義値で初期化する仕組みなので、案外あり得る現象です。

adiary で mod_perl がまともに動作しないという方は、Apache上でのmod_perl 設定を確認してみるとよいでしょう。