Vous n'êtes pas identifié(e).

#1 07/07/2014 12:23:27

beugbamba
Membre

Problème d'incrémentation

Bonjour à tous
Depuis trois j'ai un gros sur mes tables principaux j'ai une erreur du genre:
CEST ERREUR:  entier en dehors des limites
dans mes logs.
J'ai pris beaucoup de temps  pour comprendre le problème. C'est juste que mon primaire key a attend sa taille maxi .
et Comme je faisais des deletes sans mettre a jour la clé ID qui est en int a atteint sa taille maximale .

Pouvez m'aider a faire  un update me permettant de reprendre les id primaire key de  1

Hors ligne

#2 07/07/2014 13:49:11

beugbamba
Membre

Re : Problème d'incrémentation

j'ai trouvé une solution du genre Update  base set colonne = colonne - (colonne-1);
La solution marche bien mais j'aurais une autre question du genre dans les configures de Postges est ce qu'on peut pas configurer si un colonne est au max de rebouclé

Hors ligne

#3 07/07/2014 21:48:07

gleu
Administrateur

Re : Problème d'incrémentation

Une séquence boucle par défaut. Il faudrait donc connaître la définition de la table et celle de la séquence associée pour en savoir plus.


Guillaume.

Hors ligne

#4 08/07/2014 10:48:08

beugbamba
Membre

Re : Problème d'incrémentation

Bonjour
Gleu pouvez m'expliquer beaucoup plus claire le boucle par défaut.

J'ai trouvé une petite explication en rapport avec sa ALTER SEQUENCE serial RESTART WITH 105; de recommencer le déconte   quand sa sa arrive a 105;"

Hors ligne

#5 08/07/2014 11:23:14

beugbamba
Membre

Re : Problème d'incrémentation

Après avoir regarder de gauche a droit j'ai pense faire un truc du genre :

CREATE TABLE books
(
  id bigserial NOT NULL,
  isbn character varying(25) NOT NULL,
  title character varying(250) NOT NULL,
  author bigint,
  price money,
  CONSTRAINT books_pkey PRIMARY KEY (id),
  CONSTRAINT books_author_fkey FOREIGN KEY (author)
      REFERENCES authors (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT books_isbn_key UNIQUE (isbn)
) 
WITHOUT OIDS;
ALTER TABLE books OWNER TO postgres;
 
CREATE SEQUENCE books_id_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;
 ALTER SEQUENCE books_id_seq RESTART WITH 9223372036854775807;.

Que pensez vous ?

Hors ligne

#6 08/07/2014 16:14:52

beugbamba
Membre

Re : Problème d'incrémentation

J'ai une question simple peut-ton creer un Sequence sur table  qui a été creer

Hors ligne

#7 08/07/2014 17:47:26

rjuju
Administrateur

Re : Problème d'incrémentation

Vous pouvez rajouter une séquence sur une table existante, il suffit de modifier de spécifier un DEFAULT nextval('nom_sequence') sur la colonne. Par contre si vous n'aviez pas de séquence avant, il faudra modifier vos application afin qu'elles utilisent la séquence plutôt que de calculer la valeur. De plus, dans votre exemple vous avez utilisé bigserial, ce qui correspond a une sequence pour un bigint, pas un int.

Hors ligne

Pied de page des forums