Dans mon application Rails 4.2, je suis tombé sur un problème étrange. J'ai dû passer l'encodage mysql à utf8mb4 (pour permettre Emoji dans les messages). J'ai mis à jour MySql 5.7, modifié tabels etc. avec database.yml Updated:Mysql2 :: Erreur Impossible d'initialiser le jeu de caractères utf8mb4 (chemin:/usr/share/mysql/charsets /)
encoding: utf8mb4
collation: utf8mb4_unicode_ci
Tout a travaillé sur ma machine locale qui fonctionne sous Mac OS.
Sur le serveur de test, j'ai effectué les mêmes étapes et la même configuration. Mais si je mets la configuration
encoding: utf8mb4
dans database.yml Je reçois
Mysql2::Error Can't initialize character set utf8mb4 (path: /usr/share/mysql/charsets/)
MySQL supplémentaire pour mysql je l'ai fait dans my.cnf sur les deux machines:
innodb_file_format = Barracuda
innodb_large_prefix
innodb_file_per_table = 1
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8mb4'
innodb_file_format_max = Barracuda
innodb_strict_mode = 1
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
I pouvez ajouter emoji sur le serveur de test, mais pas via l'application Rails. Sur les deux machines, je suis usign mysql2
version 0.3.21
. Qu'est-ce qui peut causer ce problème?
PS. Même si je ne l'ai pas sur mon ordinateur local, j'ai ajouté utf8mb4 à Index.xml sur la machine de test, mais cela n'a pas aidé.
Quelle est la version du serveur MySQL de votre serveur? Je pense que c'est ton problème. Je crois que utf8mb4 est supporté depuis 5.5, mais je ne suis pas sûr. –
J'utilise MySQL 5.7.19. La base de données elle-même supporte uft8mb4 et je peux insérer des symboles (emoji) dans la base de données mais pas avec l'application Rails. – rolkos
@rolkos - voir si cela aide: http://blog.arkency.com/2015/05/how-to-store-emoji-in-a-rails-app-with-a-mysql-database/ –