S.B
e_shop1****@yahoo*****
2005年 7月 17日 (日) 09:06:34 JST
どうもESPRIT様 SBと申します。深いところまでご説明くださいましてありがとうございます。 --- ESPRIT <espri****@poco*****> からのメッセージ: > テストは簡単です。 > 3232248520をint4フィールドに対してinsertすることを両機でテストすれば良い > ことです。 これは64bit機のbigint型フィールドでloginしadminの管理パスワードを3232248520に変更し、int型 フィールドにテーブルを変更して管理画面のlogin画面からパスワードに3232248520に入れるというこ とですか?行いましたがエラーはでます。 ERROR: integer out of range insert into login(sessionid,logintime,lastaccesstime,account,loginstatus,address) values('540402dc13de2c2907643c74b2d2566a','2005-07-17 08:57:13','2005-07-17 08:57:13','admin','p',3232248520) [TEP STOP] 64bit機のbigint型フィールドのadminの管理パスワードを3232248520に変更するとエラーは出ません でした。32bit機int型フィールドでもエラーは出ませんでした。 > SBさんの説が正しければ、32bit機では、insertに成功します。 > 成功してくれるようでしたら、32bit機を使えば開発は楽になりますが、残念な > がら両機ともにエラーとなると思われます。 > つまり、OSでもCPUとも関連はなく、3232248520という値を生成した理由が、ト > ラブルの原因です。 > コードは次で処理されており、検証してみましたところ正常に機能しています。 > $n_ip4がaddressフィールドにセットされます。 > > $as_ip = explode(".", getenv("REMOTE_ADDR")); > $n_ip4 = 0; > while (list($n_key, $s_byte) = each($as_ip)) { > $n_ip4 = ($n_ip4 << 8) | (int)$s_byte; > } > > 3232248520は、アルゴリズム的には、IPV4を使用し正しくセットアップされた環 > 境下では生成されない値ということになります。 > サーバーまたはクライアントの固有の設定上の問題が疑われます。 > int8をスキーマ指定しても必ず解決されたとはいえないと思います。 > 両機の環境差を$_SERVER['REMOTE_ADDR']などスクリプト次元で確認された方が > 良いように思います。 これは phpで書いて print $_SERVER['REMOTE_ADDR'] としたものをブラウザから 64bitのマシンに繋ぐと 私の IP address IPv4 の192.168.20.64 が表示されます。 このような結果でした。 __________________________________ Save the earth http://pr.mail.yahoo.co.jp/ondanka/