Maj en 0.7.4 masque tous les champs utilisateurs à cause erreur SQL dans mise à jour (Anomalie #577)


Added by Raphaël Hertzog about 1 year ago. Updated 12 months ago.


Status:Fermé Start date:03/05/2013
Priority:Urgent Due date:
Assignee:Johan Cwiklinski % Done:

100%

Category:Base de données
Target version:-
Version utilisée:0.7.4

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.


Associated revisions

Revision 4da05f40
Added by Johan Cwiklinski about 1 year ago

Wrong column type for visibility field, refs #577

Revision 797e7740
Added by Johan Cwiklinski about 1 year ago

Rewrite FieldsConfiguration instantiation and checks; fixes #577

History

Updated by Roland Telle about 1 year ago

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".

Updated by Raphaël Hertzog about 1 year ago

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

:-(

Updated by Raphaël Hertzog about 1 year ago

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...

Updated by Roland Telle about 1 year ago

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 ...

Updated by Raphaël Hertzog about 1 year ago

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

Updated by Raphaël Hertzog about 1 year ago

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.

Updated by Raphaël Hertzog about 1 year ago

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).

Updated by Johan Cwiklinski about 1 year ago

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...

  • Status changed from Nouveau to In Progress

Updated by Raphaël Hertzog about 1 year ago

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.

Updated by Raphaël Hertzog about 1 year ago

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: ""

Updated by Johan Cwiklinski 12 months ago

  • % Done changed from 0 to 100
  • Status changed from In Progress to Résolu

Updated by Johan Cwiklinski 12 months ago

  • Status changed from Résolu to Fermé

Also available in: Atom PDF