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 もやめちゃいなよ、ということですね。

1 件のコメント:

  1. At the Advanced Photon Source , a robust Home Neck Massagers gentle supply on the Department of Energy's Argonne National Laboratory, the authors smashed high-energy X-rays into steel samples throughout printing. Engineers have long been engaged on new material strategies that can stand up to rigorous testing and adjust to all pertinent constructing security codes. There have already been many successes on this regard, together with refining current concrete and polymer mixes and incorporating biodegradable supplies. TechRadar, “This Is the World’s Largest 3D-Printed House.” See an incredible example of 3D printing know-how in action. FormLabs, “Guide to Stereolithography 3D Printing in 2020.” A complete information to how SLA printing know-how works.

    返信削除