Entier de gamme sur Postgres DB
Simple application rails à l'aide de Postgres DB, être "entier hors de portée' erreur lorsque vous essayez d'insérer 2176968859. Devrait être une solution facile pour les migrations, mais je ne suis pas sûr. Droit maintenant, je l'ai...
create_table :targets do |t|
t.integer :tid
...
end
Vous devez vous connecter pour publier un commentaire.
Quelle est la question? Vous ne déborde. Utiliser un bigint si vous avez besoin de numéros de gros.
http://www.postgresql.org/docs/8.3/interactive/datatype-numeric.html
Voici l'incantation magique dans votre migration lorsque vous déclarez la colonne:
L' :limite => 8, c'est la magie dans ce cas, en tant que postgres seulement signé entiers de 4 octets quand vous venez de dire entier. Il utilise de 8 octets entiers signés.
Dans Les Rails 4. Dans votre fichier de migration, vous pouvez définir la colonne:
Comme indiqué dans les réponses précédentes,
limit: 8
permettra également de réaliser la même choseRemarque la plage de valeurs autorisées pour le type entier dans http://www.postgresql.org/docs/8.3/interactive/datatype-numeric.html. Je pense que vous allez avoir à utiliser un bigint, en décimal ou en double précision.
PostgreSQL entiers sont signés, il n'est pas non signé datatype - je parie que c'est votre problème.
Si vous avez besoin de plus grandes valeurs, l'utilisation de type bigint. Si bigint n'est pas suffisant, utilisez numérique - mais à utiliser bigint plutôt que numérique, sauf si vous avez besoin de la plus grande taille ou décimales, car il est beaucoup plus rapide.