ともだちはすくないです

30代既婚男子。子供2人。日経先物トレードとかプログラミングとか英語とか

日経先物のデータをmysqlに格納しようとしたら売買代金でエラーになった

とあるwebサイトからスクレイピングして、日足の「始値」「高値」「安値」「終値」を取得。そしてmysqlに格納しようとしています。プログラムも作成し(なぜかプログラム作成はruby。。)いざデータベースに取り込む時に、、途中で異常終了しました。ターミナルのエラーメッセージ見てると以下のようなもの。(「7395934775」は、とある日の日経先物の売買代金です。)

`ensure_in_range': 7395934775 is out of range for ActiveRecord::Type::Integer with limit 4 (RangeError)

ふむふむ、どうやらint型では桁数が足りないとのこと。調べているとrubyのint型の範囲は「-2147483647〜2147483648」らしい。うん、これじゃ売買代金多い日は足りない。もっと大きな範囲を指定できる型にしないといけないようだ。

ということで「int」型を「bigint」型に変更します。mysqlのコマンドで「days」テーブルの売買代金「value」の型変更。

mysql> alter table days change value value bigint;


これで売買代金が多い日でもエラーなくmysqlに格納できるようになりました。