Demande #3255
ferméCréer un dépôt public pour la version Chapril
0%
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.
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.