Anomalie #577
ferméMaj en 0.7.4 masque tous les champs utilisateurs à cause erreur SQL dans mise à jour
100%
Description
J'utilise PostgreSQL et pour la mise à jour de 0.7.2 à 0.7.4 je n'ai eu aucun message d'erreur. Mais la mise à jour ne s'est pas passée correctement. Je n'ai plus aucun champ visible sur les fiches adhérents, ni en création, ni en consultation, ni en configuration.
En regardant les logs de PostgreSQL je trouve ceci en nombreux exemplaires:
2013-03-05 10:01:18 CET ERROR: invalid input syntax for type boolean: ""
2013-03-05 10:01:18 CET STATEMENT: INSERT INTO galette_fields_config (table_name, field_id, required, visible, position, id_field_category) VALUES
Mais également ceci:
2013-03-05 10:01:44 CET ERROR: relation "galette_required" does not exist at character 34
2013-03-05 10:01:44 CET STATEMENT: SELECT "galette_required".* FROM "galette_required"
Je trouve cela étrange que ces erreurs SQL faciles à intercepter ne remontent pas au niveau de l'interface graphique.
Mis à jour par Roland Telle il y a plus de 11 ans
Raphaël Hertzog a écrit :
J'utilise PostgreSQL et pour la mise à jour de 0.7.2 à 0.7.4 je n'ai eu aucun message d'erreur. Mais la mise à jour ne s'est pas passée correctement. Je n'ai plus aucun champ visible sur les fiches adhérents, ni en création, ni en consultation, ni en configuration.
Je vous suggère de lancer le plugin admintools "Réinitialiser la configuration des champs".
Mis à jour par Raphaël Hertzog il y a plus de 11 ans
Roland Telle a écrit :
Je vous suggère de lancer le plugin admintools "Réinitialiser la configuration des champs".
Sauf que ce dernier n'est pas à jour:
92.243.16.27 - 2013-03-05 09:36:46 - 4 - Plugin Galette Admin Tools is known to be compatible with Galette 0.7.1 only, but you current installation require a plugin compatible with at least 0.7.3
:-(
Mis à jour par Raphaël Hertzog il y a plus de 11 ans
Raphaël Hertzog a écrit :
92.243.16.27 - 2013-03-05 09:36:46 - 4 - Plugin Galette Admin Tools is known to be compatible with Galette 0.7.1 only, but you current installation require a plugin compatible with at least 0.7.3
Fausse alerte, j'avais la version 1.1, avec la version 1.2, le plugin s'active mais je ne trouve pas l'écran où est "Réinitialiser la configuration des champs". Et puis en essayant d'accéder à l'URL directe /galette/plugins/galette-plugin-admintools/admintools.php je suis redirigé vers la liste des adhérents...
Mis à jour par Roland Telle il y a plus de 11 ans
Raphaël Hertzog a écrit :
[...] Fausse alerte, j'avais la version 1.1, avec la version 1.2, le plugin s'active mais je ne trouve pas l'écran où est "Réinitialiser la configuration des champs". Et puis en essayant d'accéder à l'URL directe /galette/plugins/galette-plugin-admintools/admintools.php je suis redirigé vers la liste des adhérents...
Dans "Outils de contenus", il y a trois boutons sur fond gris. Le 2e à droite ...
Mis à jour par Raphaël Hertzog il y a plus de 11 ans
Le problème est que dans le schéma Postgresql le champ visible est encore un boolean:
fdngalette=# \d galette_fields_config
Table « public.galette_fields_config »
Colonne | Type | Modificateurs
-------------------+-----------------------+---------------
table_name | character varying(30) | non NULL
field_id | character varying(30) | non NULL
required | boolean | non NULL
visible | boolean | non NULL
position | integer | non NULL
id_field_category | integer |
J'ai utilisé ALTER TABLE galette_fields_config ALTER COLUMN visible TYPE int USING 1;
(le USING 1 est nécessaire car il ne sait pas convertir un booléen en entier, et la valeur n'était pas importante puisque la table était vide dans mon cas)
Malgré cela, j'ai toujours une drôle d'erreur dans mes logs quand j'essaie d'accéder à l'URL admintools:
92.243.16.27 - 2013-03-05 10:16:28 - 3 - [Galette\Entity\FieldsConfig] An error occured trying to initialize fields configuration for table `galette_adherents`.SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer: ""
Et au niveau PostgreSQL:
2013-03-05 11:16:28 CET ERROR: invalid input syntax for integer: ""
2013-03-05 11:16:28 CET STATEMENT: INSERT INTO galette_fields_config (table_name, field_id, required, visible, position, id_field_category) VALUES
Mis à jour par Raphaël Hertzog il y a plus de 11 ans
Raphaël Hertzog a écrit :
Et au niveau PostgreSQL:
2013-03-05 11:16:28 CET ERROR: invalid input syntax for integer: ""
En continuant les investigations c'est parce les les variables $this->all* sont vides dans /usr/share/galette/lib/Galette/Entity/FieldsConfig.php à l'exécution de ->init.
Alors que $this->_defaults est OK. Et c'est surement parce que >init est appelé par ->checkUpdate avant d'avoir rempli ces variables dans le cas où il y a des différences entre les champs connus et les champs enregistrés dans la base. :(
Et le plugin admintools qui ne marche pas c'est qu'il ne me reconnait plus comme administrateur système probablement parce que le champ admin n'est plus connu du système maintenant que le table fields_config est vide ... j'ai désactivé la vérification pour pouvoir m'en servir malgré tout.
Mis à jour par Raphaël Hertzog il y a plus de 11 ans
J'abandonne, je vais restaurer 0.7.2 pour le moment. D'autant plus que j'ai des soucis avec des libellés de contributions qui ont disparu, ainsi que des libellés de certains statuts (président, secrétaire, trésorier).
Mis à jour par Johan Cwiklinski il y a plus de 11 ans
- Statut changé de Nouveau à In Progress
Le script de mise à jour ne modifiait effectivement pas le type du champ visible, ce sera ajouté dans la prochaine release.
Concernant les problèmes avec la configuration des champs, ça semble recouper divers cas de figure que certains ont eu, mais pas moi :/ J'ai le dump d'un base qui devrait me permettre de reproduire pas mal de soucis ; il faut juste que j'aie le temps de m'y pencher...
Mis à jour par Raphaël Hertzog il y a plus de 11 ans
J'ai retenté la mise à jour en convertissant "visible" en int avant la mise à jour. Ce n'est pas mieux:
92.243.16.27 - 2013-04-11 10:26:17 - 3 - [Galette\Entity\FieldsConfig] An error occured trying to initialize fields configuration for table `galette_adherents`.SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer: ""
92.243.16.27 - 2013-04-11 10:26:17 - 3 - [Galette\Entity\FieldsConfig] An error occured trying to initialize fields configuration for table `galette_adherents`.SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer: ""
À noter que ma table galette_fields_config est vide AVANT la mise à jour mais cela ne semble pas poser de soucis à la version 0.7.2.2.
Mis à jour par Raphaël Hertzog il y a plus de 11 ans
En étant quasiment dans la configuration de la branche hotfix/0.7.4.1 cela n'a toujours pas fonctionné. Même une installation initiale échoue sur le même problème. Le message est légèrement différent puisqu'il se plaint du champ "required" qui est le dernier booléen dans la table galette_fields_config.
92.243.16.27 - 2013-04-11 11:53:33 - 4 - PHP Warning: array_walk() expects parameter 1 to be array, null
given in /usr/share/galette/lib/Galette/Entity/FieldsConfig.php on line 193
92.243.16.27 - 2013-04-11 11:53:33 - 4 - Fields configuration count for `adherents` columns does not mat
ch records. Is : 0 and should be 37
92.243.16.27 - 2013-04-11 11:53:33 - 3 - [Galette\Entity\FieldsConfig] An error occured while checking update for fields configuration for table `adherents`. SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type boolean: ""
Mis à jour par Johan Cwiklinski il y a plus de 11 ans
- Statut changé de In Progress à Résolu
- % réalisé changé de 0 à 100
Appliqué par commit 797e7740d6f6f71641343ae33490d6a91275a662.