2011/04/25

SQLで0がNULLになっちゃう

xampp で EC CUBE を改造する日々。ほとんど触れたことのないSQLにも慣れてきた。JOIN さえされていなければ。
なのだが、慣れてないせいもあって、掲題のような変なことに時間を取られた。


受注情報を update する際に、複数ある主キーの1つに数値の 0 をセットしようとするとエラーになってしまう。
Column 'hogehoge_id' cannot be null
とか。試しにコマンドラインで打ってみても、phpMyAdmin でやってみても通る。仕方なしに数値の 0 だったときだけ文字の '0' に変えたところ update できた。・・・気持ち悪いが、調べても何が悪いんだかよく分からない。

そして今度は受注情報を読み出すところで、なぜか読み出せない。select の条件として hogehoge_id が 0 のところが引っ張ってこれない。これまたコマンドラインだとちゃんと動く。やだもう。where条件のところを
select * from dtb_hanage where hogehoge_id = COALESCE(?,0)
として値がNULLだったら 0 が入るようにして動くようになった。これまた気持ち悪い。

ということは、やはり 0 がどこかで NULL 扱いされるように変換されているということ。2.11.0 では同じような個所が問題なく動いているので、PEAR::DB の問題か、2.4.4 の問題か。コマンドラインでは問題ないので、MySQLのせいではなさそう。

まぁ、とにかく調べてもめぼしい情報が出てこない。もうPEAR::DBなんかやめちゃって、2.4.4 もやめちゃいなよ、ということですね。

0 件のコメント:

コメントを投稿