先日騒いでいたJDBCドライバを読み込んでくれなかった事件

単にデータベース名を間違っていただけでした。

解決解決。


さて、作業を続行しようと思ったのですが、開発に使う試験用のDBを

作っていなかったことに気づき、DB作りから始めることに。

PostgreSQLのpgAdminで鼻歌混じりにさらりとテーブルを作り、できたことを

psqlで確認しました。


select * from (データベース名);


そして出てきたレコードにびっくり。

日本語のレコードが意味のわからない漢字に変換されていました。


文字化け。


ええ~~~!?なんで!?

8.3のときはそんなことなかったのに。

インストールしたとき、「ロケールとやらを指定してね☆」

という項目があったので、Japanとかにしておいたのがまずかったのか

と思いました。

8.3インストールのメモを見たとき、Cを指定する!と残っていたので。


仕方なく、アンインストールして再インストール。ロケールはしっかりCにしてっと…

またちまちま適当なDBを作り、psqlで確認。

また文字化け。

アレ、ロケール関係ないのかよ。


じゃあなんだ!?ネットで情報を探すも、まだ8.3の情報ばかり。

困った…


聞けば同僚のPostgreSQLは文字化けなどしていないという。

理不尽すぎる・・・


「エンコーディング間違ってるんじゃないの?私S_JISでやってる。」


という同僚のアドバイスの元、DBの設定で見てみたら私のはUTF-8。

これが原因か?

で、設定しなおそうとするも、エンコーディングのところだけなぜか

変更できないようになっている。


どうせえちゅうねん。


半ばやけくそでpsqlでhelpコマンドを呼び出しました。

その中に思わぬヒントが。


\encodingで文字コードの表示とセットができるよ☆


このhelpに従って問題が解決したことがない私でしたが、試しに

やってみました。

確かに\encodingと打って実行すると、今のエンコードが出る。

UTF-8。じゃあ、空白入れて変えたい文字列入れたら変更

できたりして(笑)。


\encoding S_JIS


やってみたら、なんとできた。

もう一度selectを実行すると、文字化けもなくなっていました。


万歳!


PostgreSQLが文字化けしてしょうがない、という方の参考になればと。


ペタしてね


今日から同僚と二手に別れて、私は検索システムを作ることに。

で、早速作業開始。
最初はWebページのサンプルをコピペして、
必要な部分だけ書き換えて作ってやろうと思ってたんですが、
やっぱ他人の書いたコードって流れが上手く追えなくて…
調べたことをもとに、自分で最初から書いてみることにしました。

必要なものimportして、クラス宣言するでしょ、あ、HTMLのフォームから入力された値引っ張ってきたいから、メソッド名はdoPost。で、適当な変数にJDBCのurl、パスワード、ユーザーID格納。
ドライバを読み込んで、さっき用意した変数を使ってDBにアクセス。
SQLで引っ張ってこーいって命令して、これまた結果は変数に格納。
で、結果の中身を列毎にまたまた変数に格納して、それを出力っと。
で、何か赤い下線がでてtry~catchで例外処理しろというので、くくって必ずDB接続は切断するようにしてと。

出来た~!成長したな私!さあ、実行と。

ClassNotFoundException

やっぱりエラー。しかし、成長したからね私(笑)。落ち着いてエラー文を見る。
Classがないってことは、ドライバを見つけられてないってことね。
コードを見てみると、確かにドライバのurl間違ってた。
ごめんごめん。とかいいつつ訂正してまた実行。

今度のエラー文は…
文字化けひどくて読めねぇ!なんだこりゃ!?

文字化けの間には、朧げに私のPCのIPアドレスとPostgreSQLの設定ファイルの名前が混ざっている…
完全にドライバとJavaが上手くいってない様子。

昨日PostgreSQL、バージョンアップしたのよね。
JDBCも新しくインストールしたんだけどなぁ…。

うーん…

明日もう一回コードの記述ミスとPostgreSQLの設定見てみよう。
Webアプリのログイン機能を作っていました。

もちろん、まだ正常に動作しません(笑)。

ログイン認証はFORM認証という手法をとりました。
ログイン画面に入力した内容を処理するんですが、処理をサーブレットで行うわけでなく、Tomcatの方に処理してもらうんです。

猫さんのフォルダにあるserver.xmlというファイルと、Webアプリごとに作られるweb.xmlをちょっと書き換えればいいんですが…

なぜかできない!
正しいIDとパスワードいれたのに、ログイン失敗画面にジャンプします。
誰も入れないorz

エラー文いわく「ユーザーのIDやパスワードが書いてあるDBの文字型と、入力された値の文字型が違うよぅ」
とのたまわる。
意味わかんねぇと思いながら、エラー文でネット検索。

どうやら型についてブチブチうるさくなったのは、使用しているDB、PostgreSQLのバージョンが関係している様子。
なんでも、8.3にバージョンアップしてから、型に関してうるさくなったらしいのです。
まさに今使ってるやつ!
ネットの記述の中には、やむを得ず8.2にバージョンを落とした方もいらっしゃいました。

いやー、落としたくはないよなぁ…
というわけで対処しなきゃいけないわけですが、方法はわからず。

そんなこんなで一日終了。
まさかコーディングでPostgreSQLのバージョンにぶち当たるとは思いもよらなかった…