大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 获取“value”3000002000“超出了类型整数的范围”,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
time_in_ms | bigint
但是,当我在Rails中存储一个值时,我得到以下错误
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”小于列的最大值(我正在阅读的是“9223372036854775807”),所以我想知道还有什么问题以及如何解决它.
编辑:为了提供更多信息,在我的db / scheR_608_11845@a.rb文件中,所描述的列就是这样描述的……
create_table "my_object_times",force: :cascade do |t| ... t.Integer "time_in_ms",limit: 8
编辑2:这是PSQL中create table的输出
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,over@R_450_10636@rank Integer,age_group_rank Integer,gender_rank Integer );
例如:我有这个迁移文件
class CreateSecureUserTokens < ActiveRecord::Migration def change create_table :secure_user_tokens do |t| t.Integer :sso_id,null: false,length: 8 t.String :token,null: false t.timestamps null: false end end end
注意,它具有包含的长度:8要求使整数变为bigint.但是,在我运行迁移后,我遇到了与您相同的问题.最后,我刚刚创建了另一个迁移来尝试解决问题,并且它有效.这是我用来解决问题的迁移:
class ModifySecureTokensForLargerSsoIdSizes < ActiveRecord::Migration def change change_column :secure_user_tokens,:sso_id,:Integer,limit: 8 end end
因此,如果我们改变它以满足您的需求,那将是:
class ObjectTimesBigInt < ActiveRecord::Migration def change change_column :my_object_times,:time_in_ms,limit: 8 end end
希望有所帮助!-Charlie
以上是大佬教程为你收集整理的ruby-on-rails – 获取“value”3000002000“超出了类型整数的范围”全部内容,希望文章能够帮你解决ruby-on-rails – 获取“value”3000002000“超出了类型整数的范围”所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。