OpenEdition / lodel

Science publishing CMS
GNU General Public License v2.0
50 stars 27 forks source link

Mise à jour de v1.0.0 vers v1.0.1 en mode "singledatabase" #124

Open thom4parisot opened 3 years ago

thom4parisot commented 3 years ago

Bonjour,

Quand je tente de mettre à jour une instance de Lodel qui fait référence à $cfg['singledatabase'] = 'on'; dans le fichier lodelconfig.php, je rencontre l'erreur suivante en lançant la commande php 1.0.1.php all :

*** Travail sur 'hybrid' ***
Select of database lodel_hybrid failed. Unknown database 'lodel_hybrid'
    Ajout des tables pour les attributs d'entrées d'index

Au runtime, le retour de C::get('singledatabase', 'cfg') est bien à 'on'.

Voici la liste des tables connues :

MariaDB [lodel]> show tables;
+-------------------------+
| Tables_in_lodel         |
+-------------------------+
| auteurs                 |
| characterstyles         |
| classes                 |
| collections             |
| entities                |
| entities_auteurs        |
| entities_collections    |
| entities_indexavances   |
| entities_indexes        |
| entitytypes_entitytypes |
| entries                 |
| entrytypes              |
| fichiers                |
| fichiersexternes        |
| history                 |
| indexavances            |
| indexes                 |
| individus               |
| internal_messaging      |
| internalstyles          |
| liens                   |
| mainplugins             |
| oailogs                 |
| oaitokens               |
| objects                 |
| optiongroups            |
| options                 |
| persons                 |
| persontypes             |
| plugins                 |
| publications            |
| relations               |
| relations_ext           |
| restricted_users        |
| search_engine           |
| session                 |
| sites                   |
| tablefieldgroups        |
| tablefields             |
| tasks                   |
| textes                  |
| textessimples           |
| texts                   |
| translations            |
| types                   |
| urlstack                |
| usergroups              |
| users                   |
| users_usergroups        |
+-------------------------+
49 rows in set (0.001 sec)

Au niveau de https://github.com/OpenEdition/lodel/blob/3838219c67d92ca9315e00311071e5404f5579c6/lodel/install/scripts/me_manipulation_func.php#L1768, si je fais cette modification, la mise à jour se déroule comme il faut semble-t'il :

- $this->current_db = c::Get('database','cfg') . "_" . $site;
+ $this->current_db = c::Get('database','cfg') . (c::Get('singledatabase','cfg') === 'on' ? '' : "_" . $site);
nahuelange commented 3 years ago

Ce qui serait bien ce serait de faire une PR, afin de faciliter l'intégration de ce type de correctif.