MAJ 20.0.0 vers 20.0.2, erreur dans la base de donnée

Bonjour,

J’ai voulu faire la mise à jour de mon nextcloud auto-hébergé de la v 20.0.0 à la 20.0.2.
Mon nextcloud est installé sur ubuntu 20.04LTS avec apache2 et postgresql, et ma première installation date de la v18.

À la fin de la mise à jour, après avoir déclaré que je ne souhaitais pas activer le mode maintenance, j’ai eu ce message d’erreur:

Doctrine\DBAL\Exception\NotNullConstraintViolationException: An exception occurred while executing ‘ALTER TABLE oc_activity_mq ADD amq_subjectparams2 TEXT NOT NULL’: SQLSTATE[23502]: Not null violation: 7 ERROR: column “amq_subjectparams2” contains null values

En cherchant, j’ai trouvé ce sujet sur le forum qui semble porposer une solution.
Je n’ai fait que tenter de lire le contenu de la table en question, et depuis j’ai un joli “Internal server error” quand je tente d’accéder à mon nextcloud depuis mon navigateur.
Je ne maitrise pas du tout les bases de données, et je suis plutôt perdu. Je n’ai pas tenté d’appliquer la solution, juste de lire le contenu de la table.

Merci de votre aide !

Donc, elle n’est pas vide?
Il y a aussi un bug: An exception occurred while executing 'ALTER TABLE oc_activity_mq ADD COLUMN amq_subjectparams CLOB NOT NULL' · Issue #24326 · nextcloud/server · GitHub

Merci de m’aider !

J’ai résolu mon soucis d’ “Internal server error”. Une histoire de mauvaise configuration de postgresql dont j’avais modifier le fichier de conf.

Concernant la table, elle ne semble pas vide.

Clairement je n’ai pas le bon vocabulaire. Les concepts de table et d’index sont des notions plutôt floues pour moi. Ton lien à l’air de résoudre mon problème, mais je ne le comprends pas assez bien pour être certain de faire les choses bien. Surtout qu’il utilise sqlite, et que chez moi c’est postgresql qui est utilisé.

Les autres ont juste vidé la table, après on peu modifier les colonnes. La nouvelle colonne ne peut pas être vide (NOT NULL) mais les entrées existantes n’ont pas encore une valeur pour cette colonne car elle n’existe pas encore.
La table contient des notifications à envoyer. Tu pourrais peut-être juste lancer le cronjob et après elle doit etre vide: sudo -u www-data php -f cron.php Si tu vides la table manuellement, ces message d’activité sont perdues.