Ответ 1
Какой вопрос? Вы переполнены. Используйте bigint, если вам нужны большие цифры.
http://www.postgresql.org/docs/8.3/interactive/datatype-numeric.html
Простое приложение rails с использованием Postgres DB, получив ошибку "целое вне диапазона" при попытке вставить 2176968859. Должно быть легкое исправление миграции, но я не уверен. Прямо сейчас у меня есть...
create_table :targets do |t|
t.integer :tid
...
end
Какой вопрос? Вы переполнены. Используйте bigint, если вам нужны большие цифры.
http://www.postgresql.org/docs/8.3/interactive/datatype-numeric.html
Здесь магическое заклинание в вашей миграции, когда вы объявляете столбец:
create_table :example do |t|
t.integer :field, :limit => 8
end
The limit = > 8 является магией в этом случае, поскольку postgres только подписывает 4-байтовые целые числа, когда вы просто говорите целое число. Это использует 8-байтовые целые числа.
В Rails 4. В файле миграции вы можете определить столбец как:
t.column :foobar, :bigint
Как отмечалось в предыдущих ответах, limit: 8
также достигнет того же самого
Обратите внимание на диапазон допустимых значений для целочисленного типа в http://www.postgresql.org/docs/8.3/interactive/datatype-numeric.html. Я думаю, вам придется использовать bigint, десятичную или двойную точность.
Целые числа PostgreSQL подписаны, нет неподписанного типа данных - я уверен, что ваша проблема.
Если вам нужны большие значения, используйте bigint. Если bigint также недостаточно, используйте числовое значение - но используйте bigint, а не числовое, если вам не нужен больший размер или десятичный знак, поскольку он намного быстрее.