2010-10-15 15 views
1

J'ai une table d'utilisateurs avec une clé primaire uid de type de données bigint.Bigint sur PostgreSQL 8.3

Je ne comprends pas pourquoi je reçois l'erreur: « Minteger hors de portée » lorsque vous essayez d'ajouter un utilisateur uid = 100000349053153.

Cela devrait fonctionner (selon la doc: http://www.postgresql.org/docs/8.3/static/datatype.html)

+0

Beaucoup trop peu d'informations. Comment ajoutez-vous l'utilisateur? Quelle est la déclaration exacte que vous publiez? Faites-vous cela par programme? Si oui, quelle langue, avec quelle version de la bibliothèque? Montrez-nous le code exact que vous utilisez. Vous nous avez donné une partie d'un message d'erreur, mais je suis à peu près sûr que ce n'est pas complet. Collez le message _full_ et toute autre donnée pertinente l'entourant. –

+0

Bien sûr. Cette la requête: http://gist.github.com/627669 –

+0

Et l'erreur: erreur \t C22003 \t Minteger hors de portée \t Fint8.c \t L1205 \t Rint84: –

Répondre

0

FWIW les works suivants très bien pour moi:

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

INSERT INTO bigintexample (id) VALUES (100000349053153); 
2

Merci Nicolas et Adam.

Le problème était lié à mon utilisation confuse de Rails. J'ai eu tort de penser que rake db: reset recrée la base de données à partir des fichiers de migration. J'ai eu les fichiers de migration correcte mais rake db: reset utilisait des informations erronées fournies par schema.rb

Si vous souhaitez stocker Facebook ID, l'utilisation (dans vos migrations):

t.integer :uid, :limit => 8 

Vous pouvez ajouter un index:

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

Et si vous voulez recréer votre base de données Rails de l'utilisation de toutes pièces:

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