9

So I built a scraper and am pulling in some objects. The issue is some are foreign languages and it is tripping the mysql db up a bit. This is the error I got. Any idea what I can do with this? Thanks!

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

1
  • Use UTF-8 in the database? Commented May 3, 2013 at 1:43

3 Answers 3

17

This can also be triggered if the string you're trying to insert has invalid UTF-8 byte sequences. For example, in ruby you can remove any invalid characters using

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

String#scrub can be used in ruby 2.1 onwards

string_with_invalid_sequences.scrub
Sign up to request clarification or add additional context in comments.

4 Comments

I don't know why, but you first suggestion helped me and scrub doesn't worked for me.
@across - does this work for you: string_with_invalid_sequences.scrub('')?
string_with_invalid_sequences.encode only this works for me..., none of the above solutions worked, scrub didn't work as well.
@ user1735921 still not working? did you check your ruby version?
10

Probably your table is set to a non Utf8 CHARACTER SET. You can change this with this sql:

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

2 Comments

Inside of a migration use: ModelName.connection.execute('ALTER TABLE model_names CONVERT TO CHARACTER SET utf8')
@TomRossi it could be because it is outside the multilingual plane (dev.mysql.com/doc/refman/5.5/en/…)
5

You can find the answer here. I am not sure how to report duplicate. Mysql2::Error: Incorrect string value Rails 3 UTF8

For your convenience, let me reiterate my answer


I had encountered this issue recently. It's essentially mysql default collation type is not utf8_unicode_ci.

Do the following. Backup your data if you have to. I had to drop the database and recreate it

rake db:drop
rake db:create

Change mysql database collation to utf8_unicode_ci ( phpMyAdmin might come in handy here) Finally, restore your migration.

rake db:migrate

Enjoy.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.