Pb Maj 11.05 -> 12 : Message : Erreur DB_ERROR_CHILD_EXISTS

,

Bonjour,

Au lancement de la migration de mon dolibarr 11.05 vers 15.01, la maj bloque sur la 12.0 avec le message d’erreur suivant :

Connexion au serveur : xxxxxxx.mysql.db OK
Connexion à la base : xxxxxxxOK
Version du serveur de base de données 5.6.50-log
Jeu de caractères du client utf8
Jeu de caractère de tri du client utf8_general_ci
Merci de patienter quelques instants…
Choix du script de migration 11.0.0-12.0.0.sql

|Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 21;
Cannot delete or update a parent row: a foreign key constraint fails (ideservilionel.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region))|

Avez-vous rencontrer un problème similaire ?
Merci pour votre aide.

Lionel

J’ai tenté une réparation, avec dans l’url :
https://www.xxxxx/htdocs/install/repair.php?force_utf8_on_tables=confirmed
Dolibarr logo
15.0.1
Installation ou mise à jour de Dolibarr
Repair
Option standard (‹ test › or ‹ confirmed ›) is undefined
Option force_disable_of_modules_not_found (‹ test › or ‹ confirmed ›) is undefined
Option restore_thirdparties_logos (‹ test › or ‹ confirmed ›) is undefined
Option restore_user_pictures (‹ test › or ‹ confirmed ›) is undefined
Option rebuild_product_thumbs (‹ test › or ‹ confirmed ›) is undefined
Option clean_linked_elements (‹ test › or ‹ confirmed ›) is undefined
Option clean_menus (‹ test › or ‹ confirmed ›) is undefined
Option clean_orphelin_dir (‹ test › or ‹ confirmed ›) is undefined
Option clean_product_stock_batch (‹ test › or ‹ confirmed ›) is undefined
Option clean_perm_table (‹ test › or ‹ confirmed ›) is undefined
Option repair_link_dispatch_lines_supplier_order_lines, (‹ test › or ‹ confirmed ›) is undefined
Option set_empty_time_spent_amount (‹ test › or ‹ confirmed ›) is undefined
Option force_utf8_on_tables, for mysql/mariadb only (‹ test › or ‹ confirmed ›) is confirmed
Option force_utf8mb4_on_tables (EXPERIMENTAL!), for mysql/mariadb only (‹ test › or ‹ confirmed ›) is undefined
Option rebuild_sequences, for postgresql only (‹ test › or ‹ confirmed ›) is undefined

Connexion au serveur : xxxxxx.mysql.db OK
Connexion à la base : xxxxxxx OK
Version du serveur de base de données 5.6.50-log
Merci de patienter quelques instants…

*** Force page code and collation of tables into utf8/utf8_unicode_ci (for mysql/mariadb only)

Quand je relance l’installation j’ai les même erreurs …
Merci pour votre aide

Je suis revenu sur ma version 11.0.5, car je bloquais le message d’erreur lors de la MAJ, mais maintenant j’ai le message suivant lorsque je suis en création d’un client au moment de la validation. Je n’avais aucun problème auparavant.

Failed to insert event : Unknown column ‹ punctual › in ‹ field list ›

Pouvez-vous m’aider ? merci

Bonjour @gerrvais ,

tu mélanges 2 choses :

  • ta première erreur viens du fait que tu essais de faire une opérations sur une base qui comporte des tables liées… sans dire au sgbd que tu veux passer outre ces liens … → boom alerte ou erreur
  • ta 2eme action est pour modifier l’encodage des tables d’une base … rien à voir, mais pourquoi pas.

Maintenant, tu dis avoir un message d’erreur, mais sans préciser vraiment quand, ni le contexte…

Personne ne t’as répondu : parce qu’à la lecture de tout ça, la réaction c’est :

ok et ?

conseil : ouvre un post avec une question claire : tu auras des réponses :slight_smile:

Bonsoir Arre,

Merci pour ta réponse, en effet désolé si je n’ai pas été clair sur le problème rencontré initialement.
J’étais sur Dolibarr 11.0.5 sur serveur mutualisé chez OVH et PHP en version 5.6, j’ai décidé de migrer sur la version 15.0.1 afin de bénéficier de nouvelles fonctionnalités.
J’ai donc sauvegardé ma base de donnée et conservé mon dossier « document », j’ai ensuite transféré sur mon ftp les fichiers de version 15.0.1.
Je lance l’instaIl et il me demande naturellement de migrer progressivement de 11.0.5 vers la version 12.
A ce moment là j’ai le message d’erreur suivant :

Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 21;
Cannot delete or update a parent row: a foreign key constraint fails (xxxxxxxx.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region))
Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 22;
Cannot delete or update a parent row: a foreign key constraint fails (xxxxxxxx.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region))
Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 23;
Cannot delete or update a parent row: a foreign key constraint fails (xxxxxxxx.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region))
Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 25;
Cannot delete or update a parent row: a foreign key constraint fails (xxxxxxxx.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region))
Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 26;
Cannot delete or update a parent row: a foreign key constraint fails (xxxxxxxx.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region))
Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 31;
Cannot delete or update a parent row: a foreign key constraint fails (xxxxxxxxx.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region))
Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 41;
Cannot delete or update a parent row: a foreign key constraint fails (xxxxxxxx.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region))
Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 42;
Cannot delete or update a parent row: a foreign key constraint fails (xxxxxxx.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region))
Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 43;
Cannot delete or update a parent row: a foreign key constraint fails (xxxxxxx.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region)) Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 54; Cannot delete or update a parent row: a foreign key constraint fails (xxxxxxx.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region)) Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 72; Cannot delete or update a parent row: a foreign key constraint fails (xxxxxxxx.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region)) Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 73; Cannot delete or update a parent row: a foreign key constraint fails (xxxxxxx.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region)) Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 74; Cannot delete or update a parent row: a foreign key constraint fails (xxxxxxxx.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region)) Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 82; Cannot delete or update a parent row: a foreign key constraint fails (xxxxxxx.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region)) Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 83; Cannot delete or update a parent row: a foreign key constraint fails (xxxxxxx.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region)) Erreur DB_ERROR_CHILD_EXISTS: DELETE FROM llx_c_regions WHERE fk_pays = 1 AND code_region = 91; Cannot delete or update a parent row: a foreign key constraint fails (xxxxx.llx_c_departements, CONSTRAINT fk_departements_fk_region FOREIGN KEY (fk_region) REFERENCES llx_c_regions (code_region`))

Comment corriger ces erreurs afin de lancer la maj ?

Bonjour,

ce ne sont pas des « erreurs »
Mysql refuste juste de supprimer les enreg de département, tant qu’ils sont liés à un enreg de région, et de région si lié à un pays…

tu pourrais désactiver temporairement cette verif

SET FOREIGN_KEY_CHECKS=0; 
SET FOREIGN_KEY_CHECKS=1;

Mais pourquoi aurais tu besoin de ça et personne d’autres…

attend l’avis de qqun d’autre stp :slight_smile:
(ou si tu es sur de savoir restaurer avec ta sauvegarde : fais un essaie :wink: )

Merci pour ton retour, je vais tenter une restauration …

Non, je te conseillais d’essayer de désactiver la vérif des clefs étrangère pour faire passer la maj.

Par contre, là, si ça rate… oui, il faudra que tu sache faire une restauration !

Donc attend que quelqu’un d’autre ai à te proposer une solution, ou fais toi la main sur une base de test avant :slight_smile:

Désolé de pas te faire plus avancer : mais faudrait vraiment tout éplucher de ta config pour comprendre d’où ton pb vient.

En effet j’ai vu sur le wiki de dolibarr qu’il fallait rajouter en début et fin du fichier sql les FOREIGN_KEY_CHECKS comme tu m’as indiqué.
J’ai renseigné ces lignes mais l’import de la base modifiée n’a pu se faire sur OVH, suite à l’insertion de ces lignes…

En parallèle j’ai recréé une base vierge et j’ai installé la version 15 sans problème. Comment je peux intégrer les éléments de mon ancienne base dessus ?

Bonjour,

ça veut dire quoi ? Message d’erreur ?
Dans quel fichier vous avez fait la modification ?
Car le problème est dans le script de migration et pas dans la sauvegarde.

Vous pouvez vous amuser à faire des exports/imports parti par partie, mais ça va être long et douloureux.

Merci Ksar pour votre retour, en fait, j’ai pris une sauvegarde de ma base .sql, je l’ai ouverte avec un éditeur de texte et j’ai ensuite insérer SET FOREIGN_KEY_CHECKS=0; au tout début et j’ai ensuite mis à la fin de la base : SET FOREIGN_KEY_CHECKS=1, je l’ai recompressée et j’ai lancé l’import dans OVH et j’ai eu effectivement une erreur :

Vous avez demandé l’import d’un dump externe sur votre base de données xxxxx.mysql.db. Cette opération n’a pas pu être réalisée avec votre fichier.
Voici le message d’erreur correspondant :

[Errno 1] b"ERROR 1215 (HY000) at line 63 in file: ‹ /var/lib/mysql/import-mysql474-xxxxxxx-202205152252/xxxxxx-202205152252 ›: Cannot add foreign key constraint"

Nous vous suggérons de corriger votre dump et de retenter l’import.

C’est pour cela que dans un désespoir j’ai recrée une base et installé la version 15, dans le but de restaurer l’ancienne base.

ah mais non : tu mélanges encore 2 autres choses maintenant !

Là tu essaie de restaurer une bdd dans une bdd qui contient déjà des tables … (ou pas d’ailleurs, ça changera rien pour cette dernière erreur)

Pour faire des TESTS:

  • ou tu désactives la vérif ou tu migres
  • ou tu effaces tout, tu restaures et tu migres

pas les 2 croisés…

Bonjour Arre,
Pb de foreign key réglé sur la base de donnée, à positionner au niveau de la migration sur le fichier sql, la migration s’est bien déroulée. Mais maintenant à la fin de la migration quand il me dit que tout est ok et que je peux revenir sur Dolibarr, je reviens sur la page de migration, ça tourne en boucle :

Ok Version de PHP 7.3.32 (Plus d’information)
Ok Ce PHP prend bien en charge les variables POST et GET.
Ok Ce PHP prend en charge les sessions.
Ok Ce PHP prend en charge les fonctions GD.
Ok Ce PHP prend en charge les fonctions Curl.
Ok Ce PHP prend en charge les fonctions Calendar.
Ok Ce PHP prend en charge les fonctions UTF8.
Ok Ce PHP prend en charge les fonctions mbstring.
Ok Ce PHP prend en charge les fonctions Intl.
Ok Ce PHP prend en charge les fonctions ZIP.
Ok Votre mémoire maximum de session PHP est définie à 512M. Ceci devrait être suffisant.
Ok Le fichier de configuration htdocs/conf/conf.php existe.
Ok Le fichier htdocs/conf/conf.php est modifiable.

Version dernière mise à jour: 15.0.1 - Version programmes: 15.0.1

Avez-vous idée ?

Bonne nouvelle ! (ou mauvaise… car du coup, le problème initial n’est pas résolu, passons…)

Nouveau problème réglé, nouveau problème révélé : tu n’as surement pas mis tes scripts au bon endroit (il faut écraser les anciens, et pas les mettre ailleurs)

As tu consulté le wiki avant de te lancer dans une mise à jour ?

Je te remercie pour le temps que tu accordes à répondre à mes messages…
Sur le FTP, j’ai supprimé tous les dossiers sauf « Documents » et ensuite j’ai transféré les fichiers dolibarr.
J’ai contrôlé le pointage des adresses dans le conf.php ->OK
Qu’entends tu par « tes scripts au bon endroit » ?