Dans le cadre de la migration de mon serveur Davical de la 1.1.7 vers la 1.1.12, j'ai dû notamment mettre à jour le schéma de la base de données (postgreSQL).
Pour cela, une fois que le service a été migré (i.e. BDD installée et dump inséré, conf Davical rapatriée, Apache configuré et fonctionnel, éventuellement avec le SSL), il faut exécuter un script fourni par Davical.
Mais avant, il faut bien vérifier que le schéma "public" a bien comme propriétaire l'utilisateur davical_dba :
sudo -u postgres psql -d davical -c "\dn+"
Si ce n'est pas le cas, alors il faut le modifier (exemple si le propriétaire actuel est "postgres") :
sudo -u postgres psql -d davical -c "ALTER SCHEMA public OWNER TO davical_dba;"
Sans cette modification de propriétaire, le message suivant risque d'apparaître au lancement du script de mise à jour :
The database is version 15.0 currently at revision 1.3.2.
Applying patch 1.3.3.sql ... succeeded.
Applying patch 1.3.4.sql ... failed!
psql:/usr/share/davical/dba/patches/1.3.4.sql:12: ERROR: permission denied for schema public
psql:/usr/share/davical/dba/patches/1.3.4.sql:16: ERROR: current transaction is aborted, commands ignored until end of transaction block
psql:/usr/share/davical/dba/patches/1.3.4.sql:19: ERROR: current transaction is aborted, commands ignored until end of transaction block
[...]
psql:/usr/share/davical/dba/patches/1.3.4.sql:61: ERROR: current transaction is aborted, commands ignored until end of transaction block
psql:/usr/share/davical/dba/patches/1.3.4.sql:64: ERROR: current transaction is aborted, commands ignored until end of transaction block
==> No further patches will be attempted!
Successfully applied 1 patches.
Supported locales updated.
Updated view: dav_principal.sql applied.
CalDAV functions updated.
RRULE functions updated.
DBD::Pg::db do failed: ERROR: relation "dav_principal" does not exist at /usr/share/davical/dba/update-davical-database line 400, <PERMS> line 39.
Database permissions updated.
Ensuite, il suffit de relancer le script de mise à jour du schéma :
sudo -u postgres /usr/share/davical/dba/update-davical-database
En ce qui me concerne, voici la sortie en console :
The database is version 15.0 currently at revision 1.3.3.
Applying patch 1.3.4.sql ... succeeded.
Applying patch 1.3.5.sql ... succeeded.
Successfully applied 2 patches.
Supported locales updated.
Updated view: dav_principal.sql applied.
CalDAV functions updated.
RRULE functions updated.
Database permissions updated.
Pour confirmer la version du schema :
sudo -u postgres psql -d davical -c \
"SELECT schema_major||'.'||schema_minor||'.'||schema_patch
FROM awl_db_revision
ORDER BY schema_id DESC LIMIT 1;"
On doit obtenir la dernière version patchée (ici 1.3.5).