Page 1 sur 2

champ1 is not a foreign key of table2

Posté : sam. déc. 02, 2017 6:25 pm
par Denis_q
Bonsoir,

Suite une migration puis restauration des données (mais j'ai oublié dans la sauvegarde que «common» était aussi à intégrer), je me suis retrouvé avec quelques soucis dont celui-là (l'erreur en sujet).
Bon là en particulier champ1 est ID_USER_COMMON_CREATE et la table est ECRITURE mais pas que (le problème se pose pour d'autres tables).

Le sql de la table....

Code : Tout sélectionner

"ID_USER_COMMON_CREATE" integer,
.../...
CONSTRAINT "ECRITURE_pkey" PRIMARY KEY ("ID"),
  CONSTRAINT "ECRITURE_ID_COMPTE_PCE_fkey" FOREIGN KEY ("ID_COMPTE_PCE")
      REFERENCES "OpenConcerto49"."COMPTE_PCE" ("ID") MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT "ECRITURE_ID_JOURNAL_fkey" FOREIGN KEY ("ID_JOURNAL")
      REFERENCES "OpenConcerto49"."JOURNAL" ("ID") MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT "ECRITURE_ID_MOUVEMENT_fkey" FOREIGN KEY ("ID_MOUVEMENT")
      REFERENCES "OpenConcerto49"."MOUVEMENT" ("ID") MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
Et donc effectivement il n'y a pas de contreinte sur une clé étrangère qui corresponde à ID_USER_COMMON_CREATE. Ce qui me paraît étrange c'est que je n'est jamais touché la constitution des tables, alors si la contrainte y est pas, c'est que le problème est peut-être ailleurs. Donc, avant de faire un "alter table truc muche" je voudrais savoir si c'est la bonne démarche ? Si oui comment ai-je pu perdre cette contrainte en cours de route ? Sinon, comment réparer le problème ?

J'ajoute pour info que l'ID_USER_COMMON entre la récup et la présente bdd à changé dans common.user_common. Donc après restauration j'ai fait un UPDATE des champs ci-dessous dans la table ecriture pour remplacer l'ID erronnée par la bonne valeur de la nouvelle table common.user_common...

Code : Tout sélectionner

"IDUSER_CREATE"
  "IDUSER_VALIDE"
  "IDUSER_DELETE"
  "ID_USER_COMMON_MODIFY" 
  "ID_USER_COMMON_CREATE" 
Voilà. Merci pour vos réponses.

Hors Sujet

Posté : dim. déc. 03, 2017 7:55 am
par apiboussenac
Guillaume, le lien pour "Assistance Pro" ne marche pas .....
Wolfgang
(J'ai juste testé)

Re: champ1 is not a foreign key of table2

Posté : dim. déc. 03, 2017 5:22 pm
par Denis_q
Ma question qui est hors sujet ou votre réponse ?¡¡¡¡?
Si vous faites des tests, évitez de les faire les conversations qui ne sont pas des tests. Merci.

Re: champ1 is not a foreign key of table2

Posté : lun. déc. 04, 2017 3:00 pm
par guillaume
Bonjour,

Les contraintes normales de la table ECRITURE :

Code : Tout sélectionner

  CONSTRAINT "ECRITURE_pkey" PRIMARY KEY ("ID"),
  CONSTRAINT "ECRITURE_ID_COMPTE_PCE_fkey" FOREIGN KEY ("ID_COMPTE_PCE")
      REFERENCES "OpenConcerto42"."COMPTE_PCE" ("ID") MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE,
  CONSTRAINT "ECRITURE_ID_JOURNAL_fkey" FOREIGN KEY ("ID_JOURNAL")
      REFERENCES "OpenConcerto42"."JOURNAL" ("ID") MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE,
  CONSTRAINT "ECRITURE_ID_MOUVEMENT_fkey" FOREIGN KEY ("ID_MOUVEMENT")
      REFERENCES "OpenConcerto42"."MOUVEMENT" ("ID") MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE,
  CONSTRAINT "ECRITURE_ID_USER_COMMON_CREATE_fkey" FOREIGN KEY ("ID_USER_COMMON_CREATE")
      REFERENCES "Common"."USER_COMMON" ("ID") MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,
  CONSTRAINT "ECRITURE_ID_USER_COMMON_MODIFY_fkey" FOREIGN KEY ("ID_USER_COMMON_MODIFY")
      REFERENCES "Common"."USER_COMMON" ("ID") MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)
Vous les avez paumé car pas sauvegardé l'ensemble de la BD, juste votre schéma.

Cordialement,

Re: champ1 is not a foreign key of table2

Posté : ven. déc. 08, 2017 12:34 pm
par Denis_q
Ok j'aurai pû penser que cela ne se fasse à la création du schéma de la société.
Du coup, vu que les contraintes ne sont pas décrites non plus dans le manuel (je me trompe ?), comment les connaître et les remettre en place de façon exhaustive lorsuqe l'on à pas sauvegarder tous les schémas de la base de données?

Ceci dit j'ai la me erreur après avoir fait ceci...

Code : Tout sélectionner

ALTER TABLE "OpenConcerto49"."ECRITURE"
  ADD CONSTRAINT "ECRITURE_ID_USER_COMMON_CREATE_fkey" FOREIGN KEY ("ID_USER_COMMON_CREATE")
      REFERENCES "Common"."USER_COMMON" ("ID") MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION;
Voici une copie d'un extrait de l'erreur :
UncaughtException on thread Thread[AWT-EventQueue-0,6,main]

ID_USER_COMMON_CREATEis not a foreign key of /ECRITURE/
org.openconcerto.utils.ExceptionHandler: UncaughtException on thread Thread[AWT-EventQueue-0,6,main]
at org.openconcerto.utils.ExceptionHandler.handle(ExceptionHandler.java:121)
at org.openconcerto.utils.ExceptionHandler.handle(ExceptionHandler.java:125)
at org.openconcerto.erp.config.Gestion$2.uncaughtException(Gestion.java:198)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1057)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1052)
at java.awt.EventDispatchThread.processException(EventDispatchThread.java:223)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:215)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.IllegalArgumentException: ID_USER_COMMON_CREATEis not a foreign key of /ECRITURE/
at org.openconcerto.sql.model.SQLRowAccessor.getForeignIDNumberValue(SQLRowAccessor.java:506)
at org.openconcerto.sql.model.SQLRowAccessor.isForeignEmpty(SQLRowAccessor.java:527)
at org.openconcerto.sql.view.list.IListe$1.getLine(IListe.java:370)
at org.openconcerto.sql.view.list.IListe$1.getToolTipText(IListe.java:351)

Re: champ1 is not a foreign key of table2

Posté : ven. déc. 08, 2017 2:13 pm
par guillaume
Bonjour,

Vous avez les contraintes dans le SQL téléchargeable, celui qui sert à l'installation.

Cordialement,

Re: champ1 is not a foreign key of table2

Posté : ven. janv. 26, 2018 2:29 pm
par Denis_q
Bonjour,
Je reviens à la charge sur le sujet parce que depuis j'ai toujours le soucis. J'ai fait ça :

Code : Tout sélectionner

  ALTER TABLE "OpenConcerto49"."ECRITURE"
	DROP CONSTRAINT "ECRITURE_ID_USER_COMMON_CREATE_fkey";
  ALTER TABLE "OpenConcerto49"."ECRITURE"
	ADD CONSTRAINT "ECRITURE_ID_USER_COMMON_CREATE_fkey" 
	FOREIGN KEY ("ID_USER_COMMON_CREATE")
	REFERENCES "Common"."USER_COMMON" ("ID")
	MATCH SIMPLE
	ON UPDATE NO ACTION ON DELETE NO ACTION;
Sans code d'erreur de la part de psql. Du coup la requête a dû passer. La preuve, en regardant dans pgadmin la structure de la table ...
.../...
"ID_USER_COMMON_MODIFY" integer,
"ID_USER_COMMON_CREATE" integer,
.../...
CONSTRAINT "ECRITURE_ID_USER_COMMON_CREATE_fkey" FOREIGN KEY ("ID_USER_COMMON_CREATE")
REFERENCES "Common"."USER_COMMON" ("ID") MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT "ECRITURE_ID_USER_COMMON_MODIFY_fkey" FOREIGN KEY ("ID_USER_COMMON_MODIFY")
REFERENCES "Common"."USER_COMMON" ("ID") MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
... il y a bien les contraintes de création comme de modification !

Bon mais OpenConcerto continue de râler avec la même erreur depuis des semaines...
UncaughtException on thread Thread[AWT-EventQueue-0,6,main]

ID_USER_COMMON_CREATEis not a foreign key of /ECRITURE/
org.openconcerto.utils.ExceptionHandler: UncaughtException on thread Thread[AWT-EventQueue-0,6,main]
at org.openconcerto.utils.ExceptionHandler.handle(ExceptionHandler.java:121)
at org.openconcerto.utils.ExceptionHandler.handle(ExceptionHandler.java:125)
at org.openconcerto.erp.config.Gestion$2.uncaughtException(Gestion.java:198)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1057)
La structure de "Common"."USER_COMMON" est conform avec le bon champ "ID" qui à des valeurs compatibles avec celles de ID_USER_COMMON_CREATE et ID_USER_COMMON_MODIFY.

Où donc diable est l'erreur ? (c'est très agaçant cette fenêtre d'erreur qui apparaît toutes les 3 secondes).

Re: champ1 is not a foreign key of table2

Posté : ven. janv. 26, 2018 3:41 pm
par ludovic
Bonjour,

la solution est ici : viewtopic.php?f=8&t=1133&p=4608&hilit=metadata#p4608


Cordialement,
Ludovic.

Re: champ1 is not a foreign key of table2

Posté : ven. janv. 26, 2018 9:28 pm
par Denis_q
Merci.
Oui j'avais vu cette discussion là, et si ça à l'air de répondre au problème, je me demande quoi ne faire. La table module metadata est vide et l'autre contient un timestamp du mois d'août. Je me demande en quoi le changer pour... le 31 décembre 2017 11:59:59 par exemple résoudra le soucis de java.

Re: champ1 is not a foreign key of table2

Posté : sam. janv. 27, 2018 3:23 pm
par guillaume
Bonjour,

Dans le champs "VALUE" de la ligne qui a pour "NAME" "VERSION",
peu importe ce que vous mettez tant que c'est différent de l'ancienne valeur.

Cordialement,