2011-06-15 17 views
15

Possible Duplicate:
Integer out of range on Postgres DB我们如何定义大整数?

当我的代码试图大的数字,如100001857905525插入在Heroku上的数据库,我得到的错误:

ActiveRecord::StatementInvalid (PGError: ERROR: integer out of range) 

该列已经被定义为整数。我使用一个sqlite3数据库。我的代码被部署到heroku。

当我在本地主机上运行时,它工作正常。但是,只有当我在heroku上运行代码时才会出现上述错误。 也许我可以通过将列定义为长整数或双精度来解决问题。我如何在Ruby/Rails中执行此操作?

+1

这个问题已经被问和在这里得到解答http://stackoverflow.com/questions/999570/integer -out-of-range-on-postgres-db – 2011-06-15 02:53:03

+0

SQLite非常宽容(即所有文本都是文本,所以没有限制字符串大小,查看它们的[数据类型](http://www.sqlite.org/datatype3)。 html),看起来int必需增长到8位),但PostgreSQL(Heroku使用的)对性能进行了优化,所以你必须找到正确的类型。这是引入可用于开发但不在生产环境中的代码的一种微妙方式。 – 2011-06-15 05:12:19

回答

35

在迁移,你可以试试这个:

t.integer :uid, :limit => 8 

,这将产生一个64位的整数列。

(只是integer没有指定limit允许,根据PostgreSQL docs,最多10位。)

+0

谢谢!会试试这个。 – 2011-06-15 02:57:38

+0

工程就像一个魅力。谢谢 – Crystark 2013-04-25 16:16:16

+0

列的默认值设置为8位以上的数字,但它仍然可以工作,这是为列设置bigint的奇怪方式!更多信息可在以下网址找到:https://moeffju.net/blog/using-bigint-columns-in-rails-migrations – whizcreed 2015-06-09 09:32:50

相关问题