champ1 is not a foreign key of table2

Denis_q
Messages : 42
Enregistré le : ven. avr. 03, 2015 4:41 pm

sam. déc. 02, 2017 6:25 pm

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.
--
Denis Q.
GNU Linux noyau 6.2.12-300.fc38.x86_64
openjdk 17.0.6 2023-01-17
psql (PostgreSQL) 12.14
apiboussenac
Messages : 22
Enregistré le : lun. oct. 16, 2017 11:22 pm

dim. déc. 03, 2017 7:55 am

Guillaume, le lien pour "Assistance Pro" ne marche pas .....
Wolfgang
(J'ai juste testé)
Si vous aimez le blues, ici Sonny Boy Williamson II pour vous!
https://www.dropbox.com/s/tyvblfwhiy81p ... 2.avi?dl=0
Denis_q
Messages : 42
Enregistré le : ven. avr. 03, 2015 4:41 pm

dim. déc. 03, 2017 5:22 pm

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.
--
Denis Q.
GNU Linux noyau 6.2.12-300.fc38.x86_64
openjdk 17.0.6 2023-01-17
psql (PostgreSQL) 12.14
Avatar du membre
guillaume
Messages : 2457
Enregistré le : ven. févr. 11, 2011 7:15 pm

lun. déc. 04, 2017 3:00 pm

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,
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 !
Denis_q
Messages : 42
Enregistré le : ven. avr. 03, 2015 4:41 pm

ven. déc. 08, 2017 12:34 pm

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)
--
Denis Q.
GNU Linux noyau 6.2.12-300.fc38.x86_64
openjdk 17.0.6 2023-01-17
psql (PostgreSQL) 12.14
Avatar du membre
guillaume
Messages : 2457
Enregistré le : ven. févr. 11, 2011 7:15 pm

ven. déc. 08, 2017 2:13 pm

Bonjour,

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

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 !
Denis_q
Messages : 42
Enregistré le : ven. avr. 03, 2015 4:41 pm

ven. janv. 26, 2018 2:29 pm

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).
--
Denis Q.
GNU Linux noyau 6.2.12-300.fc38.x86_64
openjdk 17.0.6 2023-01-17
psql (PostgreSQL) 12.14
ludovic
Messages : 267
Enregistré le : ven. avr. 15, 2011 2:32 pm

ven. janv. 26, 2018 3:41 pm

Bonjour,

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


Cordialement,
Ludovic.
Denis_q
Messages : 42
Enregistré le : ven. avr. 03, 2015 4:41 pm

ven. janv. 26, 2018 9:28 pm

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.
--
Denis Q.
GNU Linux noyau 6.2.12-300.fc38.x86_64
openjdk 17.0.6 2023-01-17
psql (PostgreSQL) 12.14
Avatar du membre
guillaume
Messages : 2457
Enregistré le : ven. févr. 11, 2011 7:15 pm

sam. janv. 27, 2018 3:23 pm

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,
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 !
Répondre