Projet

Général

Profil

Actions

Demande #3255

fermé

Créer un dépôt public pour la version Chapril

Ajouté par Christian P. Momon il y a plus de 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normale
Assigné à:
Christian P. Momon
Début:
06/08/2018
Echéance:
% réalisé:

0%

Temps estimé:

Description

Le Chapril héberge un service Framadate dont le code est modifié :
- personnalisation (pied de page des notifications courriels…) ;
- ajout de fonctionnalités (purge automatique pour les CGU…).

Actuellement, les modifications sont faites dans des branches git localement. Celles-ci ne sont pas accessibles par l'extérieur autrement que via root@.

Donc il faudrait un dépôt public où mettre les branches Chapril.


Demandes liées 1 (0 ouverte1 fermée)

Bloqué par Admins - Demande #3269: Passer la base de données de Agir en Charset utf8mb4 + Format BarracudaFerméChristian P. Momon15/08/2018

Actions

Mis à jour par Christian P. Momon il y a plus de 6 ans

  • Projet changé de Chapril à date.chapril.org
  • Sujet changé de Framadate – Créer un dépôt public pour la version Chapril à Créer un dépôt public pour la version Chapril

Mis à jour par Christian P. Momon il y a plus de 6 ans

  • Statut changé de Nouveau à En cours de traitement
  • Assigné à mis à Christian P. Momon

Mis à jour par Christian P. Momon il y a plus de 6 ans

Création du dépôt : fait.

Par contre, l'indexation par Redmine plante sur le commit suivant : https://framagit.org/framasoft/framadate/commit/c1ea6ae2a8c246c567c004afa2357ded2a5e0a36

Il contient des caractères graphiques : 🍾 🎉

L'erreur :

(April) root@agir:/usr/share/redmine# ./bin/rails runner "Repository.fetch_changesets" -e production
/usr/lib/ruby/vendor_ruby/mysql2/client.rb:120:in `_query': Mysql2::Error: Incorrect string value: '\xF0\x9F\x8D\xBE \xF0...' for column 'comments' at row 1: INSERT INTO `changesets` 
(`repository_id`, `revision`, `scmid`, `committer`, `commit_date`, `committed_on`, `comments`) 
VALUES 
(21, 'c1ea6ae2a8c246c567c004afa2357ded2a5e0a36', 'c1ea6ae2a8c246c567c004afa2357ded2a5e0a36', 'Thomas Citharel <tcit@tcit.fr>', '2018-04-18', '2018-04-18 12:46:01',
 'Implement saving polls in localstorage and finding them\n\nAlso, this brings VueJS and MomentJS in Framadate, 🍾 🎉\n\nSigned-off-by: Thomas Citharel <tcit@tcit.fr>'
) (ActiveRecord::StatementInvalid)
        from /usr/lib/ruby/vendor_ruby/mysql2/client.rb:120:in `block in query'
[…]

Mis à jour par Vincent-Xavier JUMEL il y a plus de 6 ans

Certainement lié à [[https://www.redmine.org/issues/5793]] Je n'ai pas le temps d'investiguer davantage.

Mis à jour par Christian P. Momon il y a plus de 6 ans

C'est confirmé, c'est bien ça. RH a recommandé la commande suivante :


MariaDB [redmine]> show create table changesets;

| changesets | CREATE TABLE `changesets` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `repository_id` int(11) NOT NULL,
  `revision` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `committer` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `committed_on` datetime NOT NULL,
  `comments` longtext COLLATE utf8_unicode_ci,
  `commit_date` date DEFAULT NULL,
  `scmid` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `changesets_repos_rev` (`repository_id`,`revision`),
  KEY `index_changesets_on_user_id` (`user_id`),
  KEY `index_changesets_on_repository_id` (`repository_id`),
  KEY `index_changesets_on_committed_on` (`committed_on`),
  KEY `changesets_repos_scmid` (`repository_id`,`scmid`)
) ENGINE=InnoDB AUTO_INCREMENT=7186 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC |

Donc, même si tout est bien configuré en utf8mb4 (Ruby, Redmine, la base, etc.), chaque table peut avoir son propre encoding et là c'est UTF8. Donc pas le bon pour les emoji…

Mis à jour par Romain H. il y a plus de 6 ans

  • Bloqué par Demande #3269: Passer la base de données de Agir en Charset utf8mb4 + Format Barracuda ajouté

Mis à jour par Christian P. Momon il y a plus de 6 ans

Un autre lien plein d'explications : http://blog.andriylesyuk.com/4-byte-utf-8-problem-in-redmine-and-how-to-fix-it/

Donc il semble que la solution passe par 2 étapes :

1) Barracuda

Nous sommes en Antelope :


MariaDB [redmine]> show variables like 'innodb_file_format';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| innodb_file_format | Antelope |
+--------------------+----------+
1 row in set (0.00 sec)

Or, le lien dit : « But, these row formats are incompatible with the older MySQL table file format, which is called Antelope and which you are probably using (if you experience the UTF-8 problem and/or the column size issue). So, the solution is to also migrate your database tables to the new Barracuda file format ».

Donc, il faudrait passer à :


innodb_file_format    = Barracuda

2) convertir les tables en utf8mb4 :


ALTER TABLE <table> ROW_FORMAT=DYNAMIC, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Cette commande génère l'erreur suivante si l'étape 1) n'est pas faite :

ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

Est-il possible de faire l'étape 1 sans détruire la base ?

Mis à jour par Christian P. Momon il y a plus de 6 ans

Pour information, problème voisin déjà rencontré : #2378.

Mis à jour par Edouard Dausque il y a environ 6 ans

  • Version cible mis à Mise en production Chapril

Mis à jour par Christian P. Momon il y a presque 6 ans

  • Statut changé de En cours de traitement à Résolu

Suite au traitement du ticket #3269, le problème est résolu.

Mis à jour par Christian P. Momon il y a presque 6 ans

Mise à jour de la page des services du chapril : https://www.chapril.org/services.html et suppression du tgz temporaire.

Mis à jour par Didier Clermonté il y a plus de 5 ans

  • Statut changé de Résolu à Fermé
Actions

Formats disponibles : Atom PDF