【问题标题】:Bigint on PostgreSQL 8.3PostgreSQL 8.3 上的 Bigint
【发布时间】:2011-04-25 18:37:18
【问题描述】:

我有一个用户表,其主键 uid 的数据类型为 bigint。

我不明白为什么在尝试添加 uid = 100000349053153 的用户时出现错误:“Minteger out of range”。

这应该可以工作(根据文档:http://www.postgresql.org/docs/8.3/static/datatype.html

【问题讨论】:

  • 信息太少了。你是如何添加用户的?你发表的确切声明是什么?您是否以编程方式执行此操作?如果是这样,什么语言,使用什么库版本?向我们展示您正在使用的确切代码。您已向我们提供了错误消息的一部分,但我很确定它不完整。粘贴 完整 消息及其周围的任何其他相关数据。
  • 当然。这是查询:gist.github.com/627669
  • 还有错误:ERROR C22003 Minteger out of range Fint8.c L1205 Rint84:
  • 你在使用 Rails 和 ActiveRecord 吗?这看起来像 stackoverflow.com/questions/449665/… 。您的表规范可能不正确,要么您没有真正在 uid 上使用 bigint,要么另一个字段被声明为错误。

标签: postgresql bigint


【解决方案1】:

FWIW 以下对我来说很好用:

CREATE TABLE bigintexample
(
  id bigint,
  CONSTRAINT pk_bigintexample_id PRIMARY KEY (id)
);

INSERT INTO bigintexample (id) VALUES (100000349053153);

【讨论】:

    【解决方案2】:

    感谢尼古拉斯和亚当。

    问题与我对 Rails 的混淆使用有关。

    我认为 rake db:reset 从迁移文件重新创建数据库是错误的。 我有正确的迁移文件,但 rake db:reset 使用了 schema.rb 提供的错误信息

    如果您想存储 Facebook ID,请使用(在您的迁移中):

    t.integer :uid, :limit => 8
    

    你也可以添加索引:

    add_index :users, :uid, :unique => true
    

    如果您想从头开始重新创建 Rails 数据库,请使用:

    rake db:drop
    rake db:create
    rake db:migrate
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-24
      相关资源
      最近更新 更多