2015-03-10 10 views
6

Mam aplikację szyn. Czasami, gdy użytkownik pisze w polu tekstowym i wykonywane jest zapytanie, aby zaktualizować to pole w bazie danych MySQL, otrzymuję ten dziennik błędów:Mysql2 :: Błąd: Niepoprawna wartość ciągu: ' xE2 x80 xA8 x09

AKTUALIZACJE łodzi SET opis = 'Vive la experiencia única de navegar abordo de un clásico de madera de lujo como Mako. Te emocionará ', updated_at = '10.03.2015 20:10:32' WHERE boats.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 

. UWAGA: Niestety, nie jestem w stanie umieścić powyższy kod w kodzie. Musi być specjalna postać.

Chciałbym, aby użytkownik mógł dodać dowolny znak bez błędów.

Posiadam środowisko programistyczne i produkcyjne. Błąd występuje tylko w produkcji.

Widziałem ten post, który wygląda ten sam problem jak ja: Mysql2::Error: Incorrect string value

uruchomić tę kwerendę show variables like 'char%'; sprawdzić config znaków bazy danych i: Development:

'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/' 

Produkcja:

'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/' 

Wykonałem więc ALTER DATABASE yanpyprod CHARACTER SET utf8 COLLATE utf8_general_ci;, aby zaktualizować zestaw znaków do pliku utf8.

Jednak po zmianie ustawienia charectera na utf8 nadal otrzymuję ten sam błąd.

Odpowiedz

23

Działa, jeśli uruchomisz ALTER TABLE your_database_name.your_table CONVERT TO CHARACTER SET utf8 zamiast zapytania do zaktualizowanego zestawu znaków w powyższej bazie danych.

Rozwiązaniem jest załączony post na samym końcu.

+0

Dziękuję, pracowałeś jak czar. – iFadi

+0

Uratowałem mój tyłek, dzięki – Oussaki