[OpenBazaar-users 115] Re: Fedora x86_64 core3 の admin で integer out of range

Back to archive index

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/




Openbazaar-users メーリングリストの案内
Back to archive index