2015-03-10 13 views
6

Ho un'applicazione di rotaia. A volte, quando un utente scrive in un campo di testo e viene eseguita una query per aggiornare questo campo nel database MySQL, ottengo questo log degli errori:Mysql2 :: Errore: valore di stringa errato: ' xE2 x80 xA8 x09

UPDATE barche SET descrizione = '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' DOVE 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 

. NOTA: Siamo spiacenti, io non sono in grado di mettere il codice di cui sopra come codice. Ci deve essere un personaggio speciale.

Vorrei che l'utente potesse aggiungere qualsiasi carattere senza errori.

Ho un ambiente di sviluppo e produzione. L'errore sta accadendo solo in produzione.

Ho visto questo post che sembra lo stesso problema come il mio: Mysql2::Error: Incorrect string value

ho funzionare questa domanda show variables like 'char%'; per controllare la configurazione di caratteri del database e: Sviluppo:

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

Produzione:

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

Così, ho eseguito ALTER DATABASE yanpyprod CHARACTER SET utf8 COLLATE utf8_general_ci; per aggiornare il mio set di caratteri del database su utf8.

Tuttavia, dopo che il set di caratteri è cambiato in utf8, ho ancora lo stesso errore.

risposta

23

Funziona se si esegue ALTER TABLE your_database_name.your_table CONVERT TO CHARACTER SET utf8 anziché la query sul set di caratteri aggiornato nel database precedente.

La soluzione è il post allegato, alla fine.

+0

Grazie, ha funzionato come un fascino. – iFadi

+0

Salvato il mio culo, grazie – Oussaki

Problemi correlati