Impossible de créer un nouveau membre suite à la mise à jour vers 1.2.0.1
Bonjour, J'ai fait une mise à jour ce week-end de v1.1.6.2 vers 1.2.0.1. Depuis, je n'arrive plus à ajouter de nouveaux membres. Il s'agit d'une très vielle installation de galette qui a subit au fil des ans de nombreuses mises à jour. Je ne suis pas confiant à 100 % de l'état de la base de donnée... Voici le message d'erreur : 10.113.20.4 - 2025-12-08 20:25:13 - ERROR - Slim Application Error Type: PDOException Code: 23000 Message: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`cadvoile367`.`gal_adherents`, CONSTRAINT `gal_adherents_ibfk_1` FOREIGN KEY (`id_statut`) REFERENCES `gal_statuts` (`id_statut`) ON DELETE RESTRICT ON UPDATE CASCADE) File: /home/cadvoile/www/membres/vendor/laminas/laminas-db/src/Adapter/Driver/Pdo/Connection.php Line: 376 Trace: #0 /home/cadvoile/www/membres/vendor/laminas/laminas-db/src/Adapter/Driver/Pdo/Connection.php(376): PDO->query('INSERT INTO `ga...') #1 /home/cadvoile/www/membres/vendor/laminas/laminas-db/src/Adapter/Adapter.php(196): Laminas\Db\Adapter\Driver\Pdo\Connection->execute('INSERT INTO `ga...') #2 /home/cadvoile/www/membres/lib/Galette/Core/Db.php(805): Laminas\Db\Adapter\Adapter->query('INSERT INTO `ga...', 'execute') #3 /home/cadvoile/www/membres/lib/Galette/Entity/Adherent.php(1734): Galette\Core\Db->execute(Object(Laminas\Db\Sql\Insert)) #4 /home/cadvoile/www/membres/lib/Galette/Controllers/Crud/MembersController.php(1798): Galette\Entity\Adherent->store() #5 /home/cadvoile/www/membres/lib/Galette/Controllers/Crud/MembersController.php(185): Galette\Controllers\Crud\MembersController->store(Object(Slim\Psr7\Request), Object(Slim\Psr7\Response)) #6 [internal function]: Galette\Controllers\Crud\MembersController->doAdd(Object(Slim\Psr7\Request), Object(Slim\Psr7\Response)) #7 /home/cadvoile/www/membres/vendor/php-di/invoker/src/Invoker.php(74): call_user_func_array(Array, Array) #8 /home/cadvoile/www/membres/vendor/php-di/slim-bridge/src/ControllerInvoker.php(45): Invoker\Invoker->call(Array, Array) #9 /home/cadvoile/www/membres/vendor/slim/slim/Slim/Routing/Route.php(362): DI\Bridge\Slim\ControllerInvoker->__invoke(Array, Object(Slim\Psr7\Request), Object(Slim\Psr7\Response), Array) #10 /home/cadvoile/www/membres/vendor/slim/slim/Slim/MiddlewareDispatcher.php(73): Slim\Routing\Route->handle(Object(Slim\Psr7\Request)) #11 /home/cadvoile/www/membres/vendor/slim/slim/Slim/MiddlewareDispatcher.php(73): Slim\MiddlewareDispatcher->handle(Object(Slim\Psr7\Request)) #12 /home/cadvoile/www/membres/vendor/slim/slim/Slim/Routing/Route.php(321): Slim\MiddlewareDispatcher->handle(Object(Slim\Psr7\Request)) #13 /home/cadvoile/www/membres/vendor/slim/slim/Slim/Routing/RouteRunner.php(74): Slim\Routing\Route->run(Object(Slim\Psr7\Request)) #14 /home/cadvoile/www/membres/vendor/akrabat/rka-slim-session-middleware/RKA/SessionMiddleware.php(66): Slim\Routing\RouteRunner->handle(Object(Slim\Psr7\Request)) #15 /home/cadvoile/www/membres/vendor/slim/slim/Slim/MiddlewareDispatcher.php(129): RKA\SessionMiddleware->process(Object(Slim\Psr7\Request), Object(Slim\Routing\RouteRunner)) #16 /home/cadvoile/www/membres/vendor/slim/csrf/src/Guard.php(482): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #17 /home/cadvoile/www/membres/vendor/slim/slim/Slim/MiddlewareDispatcher.php(129): Slim\Csrf\Guard->process(Object(Slim\Psr7\Request), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #18 /home/cadvoile/www/membres/lib/Galette/Middleware/Language.php(68): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #19 /home/cadvoile/www/membres/vendor/slim/slim/Slim/MiddlewareDispatcher.php(178): Galette\Middleware\Language->__invoke(Object(Slim\Psr7\Request), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #20 /home/cadvoile/www/membres/lib/Galette/Middleware/Telemetry.php(69): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #21 /home/cadvoile/www/membres/vendor/slim/slim/Slim/MiddlewareDispatcher.php(178): Galette\Middleware\Telemetry->__invoke(Object(Slim\Psr7\Request), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #22 /home/cadvoile/www/membres/includes/main.inc.php(176): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #23 /home/cadvoile/www/membres/vendor/slim/slim/Slim/MiddlewareDispatcher.php(283): Closure->{closure}(Object(Slim\Psr7\Request), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #24 /home/cadvoile/www/membres/vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php(45): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #25 /home/cadvoile/www/membres/vendor/slim/slim/Slim/MiddlewareDispatcher.php(129): Slim\Middleware\RoutingMiddleware->process(Object(Slim\Psr7\Request), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #26 /home/cadvoile/www/membres/vendor/slim/slim/Slim/Middleware/ErrorMiddleware.php(77): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #27 /home/cadvoile/www/membres/vendor/slim/slim/Slim/MiddlewareDispatcher.php(129): Slim\Middleware\ErrorMiddleware->process(Object(Slim\Psr7\Request), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #28 /home/cadvoile/www/membres/vendor/slim/twig-view/src/TwigMiddleware.php(117): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #29 /home/cadvoile/www/membres/vendor/slim/slim/Slim/MiddlewareDispatcher.php(129): Slim\Views\TwigMiddleware->process(Object(Slim\Psr7\Request), Object(Psr\Http\Server\RequestHandlerInterface@anonymous)) #30 /home/cadvoile/www/membres/vendor/slim/slim/Slim/MiddlewareDispatcher.php(73): Psr\Http\Server\RequestHandlerInterface@anonymous->handle(Object(Slim\Psr7\Request)) #31 /home/cadvoile/www/membres/vendor/slim/slim/Slim/App.php(209): Slim\MiddlewareDispatcher->handle(Object(Slim\Psr7\Request)) #32 /home/cadvoile/www/membres/vendor/slim/slim/Slim/App.php(193): Slim\App->handle(Object(Slim\Psr7\Request)) #33 /home/cadvoile/www/membres/includes/main.inc.php(209): Slim\App->run() #34 /home/cadvoile/www/membres/webroot/index.php(50): require_once('/home/cadvoile/...') #35 {main} Voici le dump de la structure de la table gal_adherents: CREATE TABLE `gal_adherents` ( `id_adh` int UNSIGNED NOT NULL, `id_statut` int UNSIGNED NOT NULL, `nom_adh` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', `prenom_adh` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', `pseudo_adh` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', `societe_adh` varchar(200) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, `titre_adh` int UNSIGNED DEFAULT NULL, `ddn_adh` date DEFAULT NULL, `sexe_adh` smallint NOT NULL, `adresse_adh` longtext COLLATE utf8mb4_unicode_520_ci NOT NULL, `cp_adh` varchar(10) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', `ville_adh` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', `pays_adh` varchar(200) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, `tel_adh` varchar(50) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, `gsm_adh` varchar(50) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, `email_adh` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, `info_adh` longtext COLLATE utf8mb4_unicode_520_ci, `info_public_adh` longtext COLLATE utf8mb4_unicode_520_ci, `prof_adh` varchar(150) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, `login_adh` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', `mdp_adh` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', `date_crea_adh` date NOT NULL, `date_modif_adh` date NOT NULL, `activite_adh` tinyint(1) NOT NULL DEFAULT '0', `bool_admin_adh` tinyint(1) NOT NULL DEFAULT '0', `bool_exempt_adh` tinyint(1) NOT NULL DEFAULT '0', `bool_display_info` tinyint(1) NOT NULL DEFAULT '0', `date_echeance` date DEFAULT NULL, `pref_lang` varchar(20) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, `lieu_naissance` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, `gpgid` longtext COLLATE utf8mb4_unicode_520_ci, `fingerprint` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, `parent_id` int UNSIGNED DEFAULT NULL, `num_adh` varchar(255) COLLATE utf8mb4_unicode_520_ci DEFAULT NULL, `region_adh` varchar(200) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; -- -- Index pour les tables déchargées -- -- -- Index pour la table `gal_adherents` -- ALTER TABLE `gal_adherents` ADD PRIMARY KEY (`id_adh`), ADD UNIQUE KEY `login_adh` (`login_adh`), ADD KEY `id_statut` (`id_statut`), ADD KEY `titre_adh` (`titre_adh`), ADD KEY `parent_id` (`parent_id`); -- -- AUTO_INCREMENT pour les tables déchargées -- -- -- AUTO_INCREMENT pour la table `gal_adherents` -- ALTER TABLE `gal_adherents` MODIFY `id_adh` int UNSIGNED NOT NULL AUTO_INCREMENT; -- -- Contraintes pour les tables déchargées -- -- -- Contraintes pour la table `gal_adherents` -- ALTER TABLE `gal_adherents` ADD CONSTRAINT `gal_adherents_ibfk_1` FOREIGN KEY (`id_statut`) REFERENCES `gal_statuts` (`id_statut`) ON DELETE RESTRICT ON UPDATE CASCADE, ADD CONSTRAINT `gal_adherents_ibfk_2` FOREIGN KEY (`titre_adh`) REFERENCES `gal_titles` (`id_title`) ON DELETE RESTRICT ON UPDATE CASCADE, ADD CONSTRAINT `gal_adherents_ibfk_3` FOREIGN KEY (`parent_id`) REFERENCES `gal_adherents` (`id_adh`) ON DELETE RESTRICT ON UPDATE CASCADE; COMMIT; Merci d'avance pour votre aide, Antoine
Salut, Le 08/12/2025 à 21:48, Antoine a écrit :
Bonjour,
J'ai fait une mise à jour ce week-end de v1.1.6.2 vers 1.2.0.1. Depuis, je n'arrive plus à ajouter de nouveaux membres. Il s'agit d'une très vielle installation de galette qui a subit au fil des ans de nombreuses mises à jour. Je ne suis pas confiant à 100 % de l'état de la base de donnée...
Voici le message d'erreur :
10.113.20.4 - 2025-12-08 20:25:13 - ERROR - Slim Application Error Type: PDOException Code: 23000 Message: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`cadvoile367`.`gal_adherents`, CONSTRAINT `gal_adherents_ibfk_1` FOREIGN KEY (`id_statut`) REFERENCES `gal_statuts` (`id_statut`) ON DELETE RESTRICT ON UPDATE CASCADE) [...]
À première vue, la structure de la base est correcte - tout au moins du côté adhérents. L'erreur laisse à penser que le statut sélectionné n'existe pas. Le problème se pose quel que soit le statut sélectionné ? Le champ statut est-il visible/autorisé pour le profil utilisé ? Pour aller plus loin, il faut passer en mode debug, essayer d'enregistrer un adhérent, et aller voir la valeur envoyée pour le statut par la requête qui sera enregistrée dans le fichier : galette/data/logs/galette_sql.log Et voir si ce statut existe bien en base. ++ -- Johan
Salut, Merci pour l'aide.
À première vue, la structure de la base est correcte - tout au moins du côté adhérents.
J'ai fini par trouvé le problème : j'avais un mélange de tables InnoDB et MyISAM. Cela empêchait l'application de certaines contraintes. J'ai tout converti en InnoDB et remis à jours les contraintes. Cela fonctionne normalement.
Pour aller plus loin, il faut passer en mode debug, essayer d'enregistrer un adhérent, et aller voir la valeur envoyée pour le statut par la requête qui sera enregistrée dans le fichier : galette/data/logs/galette_sql.log Et voir si ce statut existe bien en base.
Là j'ai eu un souci, je n'arrive pas à passer en mode debug. Cela génère immédiatement une erreur 500 sur toutes les pages. J'ai bien un fichier galette_sql.log de crée mais il ne contient qu'une simple requête : SELECT `gal_socials`.* FROM `gal_socials` WHERE id_adh IS NULL ORDER BY `id_social` ASC Tandis que le fichier galette.log n'est pas beaucoup plus explicite : 10.113.20.4 - 2025-12-08 22:23:38 - INFO - Database version not checked in DEV mode. Au final, j'ai pu résoudre mon problème sans le mode debug mais il faudra que je jette un coup d'oeil pour comprendre l'erreur 500. Encore merci, Antoinr
Salut, Le 08/12/2025 à 23:32, Antoine a écrit :
Salut,
Merci pour l'aide.
À première vue, la structure de la base est correcte - tout au moins du côté adhérents.
J'ai fini par trouvé le problème : j'avais un mélange de tables InnoDB et MyISAM. Cela empêchait l'application de certaines contraintes. J'ai tout converti en InnoDB et remis à jours les contraintes. Cela fonctionne normalement.
OK, en effet, ceci explique cela.
Là j'ai eu un souci, je n'arrive pas à passer en mode debug. Cela génère immédiatement une erreur 500 sur toutes les pages. J'ai bien un fichier galette_sql.log de crée mais il ne contient qu'une simple requête : [...]
Au temps pour moi... Il y a un bug en 1.2.0 avec le mode debug lorsque l'on utilise l'archive. Ça a été corrigé dans la 1.2.1 sortie hier. ++ -- Johan
participants (2)
-
Antoine -
Johan Cwiklinski