with tutorial rails proyecto postgres new crear ruby-on-rails postgresql

ruby-on-rails - tutorial - ruby postgresql



Entero fuera de rango en Postgres DB (5)

Aplicación de rieles simples con Postgres DB, obteniendo el error ''entero fuera de rango'' cuando se intenta insertar 2176968859. Debería ser una solución fácil para las migraciones, pero no estoy seguro. Ahora mismo tengo ...

create_table :targets do |t| t.integer :tid ... end



Los enteros de PostgreSQL están firmados, no hay ningún tipo de datos sin firmar. Apuesto a que ese es tu problema.

Si necesita valores más grandes, use bigint. Si bigint tampoco es suficiente, utilice numérico, pero utilice bigint en lugar de numérico, a menos que necesite el tamaño más grande o decimales, ya que es mucho más rápido.



Aquí está el encantamiento mágico en su migración cuando declara la columna:

create_table :example do |t| t.integer :field, :limit => 8 end

El: limit => 8 es la magia en este caso ya que postgres solo tiene números enteros de 4 bytes cuando dices entero. Esto usa enteros con signo de 8 bytes.


En Rails 4. En su archivo de migración, puede definir la columna como:

t.column :foobar, :bigint

Como se señaló en las respuestas anteriores, el limit: 8 también logrará lo mismo