2013-05-03 12 views
8

Also ich baute einen Schaber und bin in einige Objekte ziehen. Das Problem ist, dass einige Fremdsprachen sind und es die mysql db ein wenig ausstößt. Das ist der Fehler, den ich bekommen habe. Irgendeine Idee, was ich damit machen kann? Vielen Dank!Mysql - Mysql2 :: Fehler: Falscher String-Wert:

Mysql2::Error: Incorrect string value: '\xC5\x8Dga, ...' for column 'description' at row 1: INSERT INTO sammiches (country , created_at , description , image , name , updated_at) VALUES ('Japan', '2013-05-03 01:17:06', 'A hot dog bun stuffed with fried noodles, frequently topped with pickles, such as beni shōga, with mayonnaise', '/wiki/File:Yakisoba_sandwich_by_kaex0r.jpg', 'Yakisoba-pan', '2013-05-03

+0

Verwendung von UTF-8 in der Datenbank verwendet werden? – michaelb958

Antwort

5

Sie können die Antwort hier finden. Ich bin mir nicht sicher, wie ich das Duplikat melden soll. Mysql2::Error: Incorrect string value Rails 3 UTF8

Für Ihre Bequemlichkeit, lassen Sie mich meine Antwort wiederholen


ich dieses Problem vor kurzem begegnet war. Es ist im Wesentlichen Mysql Standard Collation-Typ ist nicht utf8_unicode_ci.

Gehen Sie wie folgt vor. Sichern Sie Ihre Daten, wenn Sie müssen. Ich hatte die Datenbank zu löschen und es

rake db:drop 
rake db:create 

ändern mysql Datenbankkollatierung neu utf8_unicode_ci (phpMyAdmin könnte nützlich sein, hier) Schließlich stellen Sie Ihre Migration.

rake db:migrate 

Genießen.

9

Wahrscheinlich ist Ihre Tabelle auf ein nicht Utf8 CHARACTER SET gesetzt. Sie können dies mit diesem SQL ändern:

ALTER TABLE `your_database_name`.`your_table` CONVERT TO CHARACTER SET utf8 
+0

Innerhalb einer Migration verwenden: 'ModelName.connection.execute ('ALTER TABLE Modell_Name CONVERT TO CHARACTER SET utf8')' –

+2

Ich sehe dieses Problem und meine Tabelle ist bereits UTF8? –

+0

@ TomRossi könnte es sein, weil es außerhalb der mehrsprachigen Ebene ist (https://dev.mysql.com/doc/refman/5.5/en/faqs-cjk.html#qandaitem-A-11-1-16) –

12

Dies auch dann ausgelöst werden kann, wenn die Zeichenfolge Sie ungültige UTF-8-Byte-Sequenzen hat einzufügen sind versucht zu. Zum Beispiel in Ruby können Sie alle ungültigen Zeichen entfernen

string_with_invalid_sequences.encode('utf-8', 'binary', invalid: :replace, undef: :replace, replace: '') 

String#scrub verwenden, kann in Ruby 2.1 ab

string_with_invalid_sequences.scrub 
+2

I Ich weiß nicht warum, aber dein erster Vorschlag half mir und das Peeling funktionierte nicht für mich. – across

+0

@across - funktioniert das für Sie: 'string_with_invalid_sequences.scrub ('')'? – Mikey

+1

Nein, es hat nicht für mich funktioniert. – across

Verwandte Themen