PostgreSQL & pgsql-jp ML 3テーブル目

このエントリーをはてなブックマークに追加
42NAME IS NULL
PostgresSQLのバージョンアップで
7.1.2から7.3.3にしました。
データの移行が済んで、データの確認をした所
order by が正常に機能しなくなりました・・・
症状としては、

テーブルを作ってあいうえでデータを入れてorder byをかけた所






(4 rows)
で帰ってくると言う物です。

ほかでも調べて
./configureの設定やnitdb --encoding=EUC_JP --no-locale
もやってみたのですが、全然うまく行きません。
なんとかなる方法は無いでしょうか?

環境は
PostgresSQL7.3.3
apache_1.3.29
PHP4.3.1
です。

どなたかよいアドバイス等あったらお願いします。
43NAME IS NULL:04/05/26 18:33 ID:???
>>42
のまえに、なぜ7.3.3なんだ。
せめて7.3.6に上げてみれば。
44NAME IS NULL:04/05/26 23:11 ID:???
その手の問題はほとんどlocaleが原因なんだけどね。
psqlからshow all;かなんかしてlc_*がどうなってるか見てみたら?
4542:04/05/27 01:14 ID:???
>>43,44

返事ありがとうございます。また返答遅くなって申し訳ございません。
Show all で確認したところ、エンコーディングはEUC_JPなっていました・・・
Psql -l だとEUC_JPと表示されます・・・・
そしてlc_* us_en に・・・・
これが原因なのでしょうか?
/etc/sysconfig/li18nも
LANG=EUC_JP
LC_ALL=EUC_JP
LC_CTYPE=EUC_JP
LINGUAS=EUC_JP
と変えてあります・・・
4644:04/05/27 11:43 ID:???
>>45
ソレダ!!
lc_collateあたりは、initdbした時に決定して以降変更できないはず。
やっぱinitdbの時に--no-localeなってくれなかったように
見えるな。気の毒だけどinitdbしなおすしかないと思いマス。
4742:04/05/28 05:33 ID:???
>>44
返事が遅れて申し訳ないです。

pg_ctl stop
rm -rf /usr/local/pgsql/data
initdb --encoding=EUC_JP --no-locale
pg_ctl start

で、テストデータを流しなおして
createdb test_base
psql test_base
CREATE TABLE T_TEST (T VARCHAR(128));
INSERT INTO T_TEST (T) VALUES ('あ');
INSERT INTO T_TEST (T) VALUES ('い');
INSERT INTO T_TEST (T) VALUES ('う');
INSERT INTO T_TEST (T) VALUES ('え');
SELECT * FROM T_TEST ORDER BY T;

であいうえお順にデータが並びました。
その後
SELECT * FROM pg_settings WHERE name like 'lc%' or name like '%encoding'
でサーバークライアント共にエンコードがEUC_JPになって居るのを確認。
lc_*が全てCになっているのを確認して、データのリストアを無事に終了しました。

初歩ミスでポストマスターが正常に終了せずに変な挙動になっていたみたいです。
無理やりポストマスターをつぶして上記作業で正常動作になりました。

>>43
助言に従って7.3.6にアップしました。

以上ありがとうございました。