Project

General

Profile

Actions

Bug #3

open

erreur active record

Added by UserName LastName 10 months ago. Updated 10 months ago.

Status:
New
Priority:
Normal
Start date:
05/11/2025
Due date:
% Done:

0%

Estimated time:

Description

quand je post le json j'ai une 500 et quand je regarde les logs
Error in 22ms (ActiveRecord: 5.1ms (30 queries, 7 cached) | GC: 0.0ms)
StatementInvalid (Mysql2::Error: Incorrect string value: '\xF0\x9F\xA4\x96 A...' for column my_database.journals.notes at row 1):

Actions #1

Updated by UserName LastName 10 months ago

? Agent IA (via Google AI) :
Solution proposée :

L'erreur Mysql2::Error: Incorrect string value: '\xF0\x9F\xA4\x96 A...' for column my_database.journals.notes indique que vous essayez d'insérer une chaîne de caractères (probablement contenant des emojis ou d'autres caractères spéciaux sur 4 octets en UTF-8) dans une colonne MySQL qui n'est pas configurée pour les gérer correctement.

La colonne notes de la table journals (et potentiellement la table journals elle-même ou la base de données my_database) est probablement encodée en utf8 (qui dans MySQL est un alias pour utf8mb3 et ne supporte que les caractères sur 3 octets), au lieu de utf8mb4 qui supporte l'ensemble des caractères Unicode.

Pour corriger cela, il faut modifier l'encodage de la colonne et/ou de la table :

  1. Vérifiez l'encodage actuel de la table journals et de la colonne notes.

  2. Modifiez l'encodage pour utiliser utf8mb4. Vous pouvez le faire avec des commandes SQL similaires à celles-ci :

    -- Pour modifier la table et ses colonnes existantes (si nécessaire)
    ALTER TABLE journals CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
    -- Pour modifier spécifiquement la colonne (si la table est déjà en utf8mb4 mais pas la colonne)
    ALTER TABLE journals MODIFY notes TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    

    (Adaptez TEXT au type de données réel de votre colonne notes si ce n'est pas TEXT).

  3. Il est également recommandé de s'assurer que la connexion à la base de données depuis Rails est configurée pour utiliser utf8mb4. Cela se fait généralement dans le fichier config/database.yml en ajoutant encoding: utf8mb4.

Après avoir appliqué ces modifications, le problème d'insertion de

Actions #2

Updated by UserName LastName 10 months ago

? Agent IA (via Google AI) :
Solution proposée (inspirée d'un cas similaire) :

L'erreur StatementInvalid (Mysql2::Error: Incorrect string value: '\xF0\x9F\xA4\x96 A...' for column my_database.journals.notes at row 1) indique que la base de données MySQL, et plus spécifiquement la colonne notes de la table journals, n'est pas configurée pour accepter certains caractères, probablement des caractères UTF-8 sur 4 octets (comme les emojis ou certains symboles spéciaux).

Pour résoudre ce problème, il est nécessaire de s'assurer que la base de données, la table journals et la colonne notes utilisent un encodage compatible avec ces caractères, typiquement utf8mb4.

Actions recommandées :

  1. Vérifier et modifier l'encodage de la base de données :
    S'assurer que la base de données elle-même est en utf8mb4.
    Exemple SQL : ALTER DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  2. Vérifier et modifier l'encodage de la table journals :
    S'assurer que la table journals est en utf8mb4.
    Exemple SQL : ALTER TABLE journals CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  3. Vérifier et modifier l'encodage de la colonne notes :
    Ceci est souvent couvert par l'étape précédente, mais une vérification spécifique peut être utile. La commande CONVERT TO devrait s'en charger.
  4. Vérifier la configuration de la connexion Redmine :
    Dans le fichier config/database.yml de votre installation Redmine, assurez-vous que l'encodage pour la connexion à la base de données est spécifié comme utf8mb4. Exemple :
    production:
      adapter: mysql2
      database: my_database
      username: root
      password: "password"
      host: localhost
      encoding: utf8mb4
    
  5. Vérifier la configuration du serveur MySQL :
    Dans le fichier de configuration de MySQL (my.cnf ou my.ini), il est recommandé de configurer les valeurs par défaut pour utiliser utf8mb4.
    [client]
    default-character-set = utf8mb4
    
    [mysql]
    default-character-set = utf8mb4
    
    [mysqld]
    character-set-client-handshake = FALSE
    character-set-server = utf8mb4
    collation-server = utf8mb4_unicode_ci
    
    Un redémarrage du service MySQL est nécessaire après modification de ce fichier.

Avant d'appliquer ces changements,

Actions #3

Updated by UserName LastName 10 months ago

? Agent IA (via Google AI) :
Solution proposée (inspirée d'un cas similaire) :
L'erreur StatementInvalid (Mysql2::Error: Incorrect string value: '\xF0\x9F\xA4\x96 A...' for column my_database.journals.notes at row 1) indique que la base de données MySQL, et plus spécifiquement la colonne notes de la table journals, n'est pas configurée pour accepter certains caractères spéciaux (comme les emojis ou d'autres symboles Unicode complexes présents dans le JSON que vous postez). Ces caractères nécessitent souvent un encodage utf8mb4.

Pour résoudre ce problème, il est nécessaire de :

  1. Vérifier l'encodage et la collation de votre base de données my_database, de la table journals, et spécifiquement de la colonne notes.
  2. S'assurer qu'ils sont configurés pour utiliser un encodage compatible avec ces caractères, typiquement utf8mb4 (par exemple, avec une collation comme utf8mb4_unicode_ci ou utf8mb4_general_ci).

Si l'encodage actuel n'est pas utf8mb4, il faudra le modifier. Cela peut impliquer des commandes SQL telles que :

ALTER DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE journals CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE journals MODIFY notes TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

(Adaptez TEXT au type de données réel de votre colonne notes si ce n'est pas TEXT).

Attention : La modification de l'encodage d'une base de données ou d'une table existante doit être effectuée avec précaution, idéalement après une sauvegarde complète et en environnement de test au préalable. Il est aussi important de s'assurer que la connexion à la base de données depuis Redmine est également configurée pour utiliser utf8mb4.

Actions

Also available in: Atom PDF