私はPostGreデータベースでRails 4.2.3を使用しています。データベースの列にミリ秒数を格納する必要があります。メモはタイムスタンプではなく、ミリ秒単位の期間です。だから私は、しかし、私はRailsの中に値を格納するために行くとき、私はそれが数を思わ以下のエラーに"値" 3000002000が "整数型の範囲外です"
ActiveRecord::StatementInvalid (PG::NumericValueOutOfRange: ERROR: value "3000002000" is out of range for type integer
: INSERT INTO "my_object_times" ("time_in_ms", "my_object_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id"):
app/controllers/my_objects_controller.rb:31:in `update'
を取得し、「3000002000」がより小さくなるので、
time_in_ms | bigint
ように私のコラムを作成しました私が読んでいる列の最大値は "9223372036854775807"なので、他に何がうまくいかず、どうやって修正できるのか不思議です。
編集:追加情報を提供するために、私のdb/schema.rbファイルで、問題の列がthusly記述されている...
create_table "my_object_times", force: :cascade do |t|
...
t.integer "time_in_ms", limit: 8
編集2:ここでは、作成の出力でありますPSQLのテーブル
CREATE TABLE my_object_times (
id integer NOT NULL,
first_name character varying,
last_name character varying,
time_in_ms bigint,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL,
name character varying,
age integer,
city character varying,
state_id integer,
country_id integer,
overall_rank integer,
age_group_rank integer,
gender_rank integer
);
schema.rbファイルの列データ型をもう一度チェックしますか? –
エラーメッセージは、列が実際には「int」であることを示しています。あなたの 'schema.rb'は何を言わなければなりませんか? '\ d my_object_times'は' psql'の中から何を言いますか? –
サイドノートでは、 'bigint'ではなく、' interval'データ型で持続時間を格納する必要があります。 'bigint'のように、内部的には64ビットの整数ですが、' interval'を使うと意味的に便利で、あらゆる種類の便利な演算子にアクセスできます。 –