Mysql2::Erreur: Pas de chaîne de valeur: '\xE2\x80\xA8\x09
J'ai une application rails. Parfois, lorsqu'un utilisateur écrit dans un champ de texte et l'exécution d'une requête de mise à jour de ce champ dans la base de données MySQL, j'ai cette erreur journal:
Mise à JOUR des bateaux de DÉFINIR la description = " Vive la experiencia única de navegar abordo de l'onu clásico de madera de lujo de côme Mako. Te emocionará.', updated_at = '2015-03-10 20:10:32', OÙ les bateaux.id = 1
E, [2015-03-10T20:10:32.223430 #20343] ERROR -- : Mysql2::Error: Incorrect string value: '\xE2\x80\xA8\x09Te...' for column 'description' at row 1: UPDATE boats SET description = 'Vive la experiencia única de navegar abordo de un clásico de madera de lujo como Mako.
Te emocionará.', updated_at = '2015-03-10 20:10:32' WHERE boats.id = 1
NOTE: Désolé, je ne suis pas capable de mettre le code ci-dessus sous forme de code. Il doit y avoir un caractère spécial.
Je voudrais que l'utilisateur peut ajouter n'importe quel caractère sans erreurs.
J'ai de développement et de production de l'environnement. L'erreur est seulement dans la production.
J'ai vu ce post qui regarde le même problème que le mien: Mysql2::Erreur: Pas de chaîne de valeur
J'exécute cette requête show variables like 'char%';
pour vérifier le caractère de base de données de configuration et d':
Développement:
'character_set_client', 'utf8'
'character_set_connection', 'utf8'
'character_set_database', 'utf8'
'character_set_filesystem', 'binary'
'character_set_results', 'utf8'
'character_set_server', 'utf8'
'character_set_system', 'utf8'
'character_sets_dir', '/usr/local/Cellar/mysql/5.6.19/share/mysql/charsets/'
De Production:
'character_set_client', 'utf8'
'character_set_connection', 'utf8'
'character_set_database', 'latin1'
'character_set_filesystem', 'binary'
'character_set_results', 'utf8'
'character_set_server', 'latin1'
'character_set_system', 'utf8'
'character_sets_dir', '/usr/share/mysql/charsets/'
Donc, j'ai exécuté ALTER DATABASE yanpyprod CHARACTER SET utf8 COLLATE utf8_general_ci;
de mettre à jour ma base de données jeu de caractères en utf8.
Cependant, après la charecter jeu a changé pour de l'utf-8, j'obtiens toujours la même erreur.
OriginalL'auteur Rober | 2015-03-10
Vous devez vous connecter pour publier un commentaire.
Il fonctionne si vous exécutez
ALTER TABLE your_database_name.your_table CONVERT TO CHARACTER SET utf8
au lieu de la requête de mise à jour de jeu de caractères dans la base de données ci-dessus.La solution, c'est le joint de poste, à la toute fin.
Sauvé mon cul, merci
OriginalL'auteur Rober
Il y a deux façons de surmonter cette
Options 1
Comme dans acceptées réponse:
Option 2
Si vous avez besoin de garder la table de jeu de caractères par défaut, vous pouvez modifier le champ spécifique ou un ensemble de champs qui ont le problème avec.
J'ai eu le même problème avec deux champs dans une table, et les champs sont le stockage de contenu de texte enrichi champs de valeurs. Ces champs sont utilisés pour saisir HRML ainsi que certains contenu qui est à l'origine de l'erreur.
Donc, si la question est que dans un champ ou un ensemble de domaines, vous pouvez définir le jeu de caractères de ce champ spécifique, suivant le type de ALTER requête peut être utilisée définir le jeu de caractères d'un champ.
REMARQUE: la mise à Jour pertinentes des noms et des valeurs en fonction de vos besoins de montage pour l'environnement. La seule chose qu'il faut souligner, ici, est
CHARACTER SET utf8
OriginalL'auteur Shantha Kumara