[HELP ME] Suite à importation de clients dans PostgreSQL

Répondre
creasite59
Messages : 4
Enregistré le : mer. sept. 07, 2016 7:57 am

mer. sept. 07, 2016 8:09 am

Bonjour à tous,

Je découvre OpenConcerto et je me heurte à un problème que je ne parviens pas à résoudre seul. Votre aide est donc la bienvenue.

Mon problème :
J'ai importer un petit millier de clients directement dans la base de donnée en remplissant deux tables :
- La table stockant les adresses,
- La table stockant les clients...

Tout s'est merveilleusement bien passé.

Les soucis arrivent lorsque je crée un nouveau client via l'interface de gestion d'OpenConcerto :
Tous les champs remplis, j'enregistre et là, catastrophe :
OpenConcerto crée le client avec un ID du style 1034 mais tente d'enregistrer son adresse avec un ID genre 7. Or, après mon import, le n°7 est déjà pris dans la table des adresses et forcément, cela engendre un violation de contrainte liée à la clé primaire des adresses...

Comment "forcer" OpenConcerto à enregistrer l'adresse du nouveau client sur un ID libre et non, l'un de ceux que j'ai importer...

La seule solution que j'ai trouvé consisterait à me taper un millier d'échec car à chaque t'entative, OC incrémente l'ID de l'adresse de 1.

Merci de votre aide
Avatar du membre
guillaume
Messages : 2434
Enregistré le : ven. févr. 11, 2011 7:15 pm

mer. sept. 07, 2016 12:57 pm

Bonjour,

Ça n'a rien à voir avec OpenConcerto... vous n'avez pas mis à jour vos séquences dans les tables...

Cordialement,
Directeur technique d'OpenConcerto qui dans son temps libre s'occupe du forum.
Pour une assistance pro, nous sommes joignables à ILM Informatique contre quelques jetons.
Pensez aussi à lire le manuel !
Samuel_Burg
Messages : 144
Enregistré le : mer. juil. 22, 2015 12:17 pm

ven. sept. 09, 2016 9:18 am

Bonjour,

Apparemment vous avez bricolé la base de données.

Pour la mise à jour des séquences vous devez utiliser quelques chose comme ça :

SELECT setval('"COMPTE_PCE_ID_seq"', (SELECT MAX("ID") FROM "COMPTE_PCE"));

Bon, évidement, ça c'est l'exemple pour le plan comptable de l'entreprise, il faut l'appliquer à la bonne table pour vous !

Et l'injection dans une table n'est généralement pas suffisante, il vous faut aussi gérer les dépendances d’indexation entres les différentes tables pour ne pas avoir une pile de problèmes dans un second temps.

Cordialement,

Samuel
creasite59
Messages : 4
Enregistré le : mer. sept. 07, 2016 7:57 am

ven. sept. 09, 2016 1:19 pm

Bonjour,

Merci pour vos réponse...

Je vais tenter un

Code : Tout sélectionner

SELECT setval('"ADRESSE_ID_seq"', (SELECT MAX("ID") FROM "ADRESSE"));
creasite59
Messages : 4
Enregistré le : mer. sept. 07, 2016 7:57 am

ven. sept. 09, 2016 1:25 pm

Merci à tous, ça a fonctionné...

La bonne requête était :

Code : Tout sélectionner

SELECT setval('"OpenConcerto49"."ADRESSE_ID_ADRESSE_seq"', (SELECT MAX("ID_ADRESSE") FROM "OpenConcerto49"."ADRESSE"));
PgAdmin3 m'a répondu "1010", ce qui est exact ;)
Répondre