9

所以我建造了一个刮刀并正在拉一些物体。问题是有些是外语,它使 mysql 数据库有点跳闸。这是我得到的错误。知道我能用这个做什么吗?谢谢!

Mysql2::Error: 不正确的字符串值:'\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', '热狗面包塞满了炒面,上面经常放着泡菜,比如红酱加蛋黄酱', '/wiki/File:Yakisoba_sandwich_by_kaex0r.jpg', 'Yakisoba-pan', '2013- 05-03

4

3 回答 3

17

如果您尝试插入的字符串包含无效的 UTF-8 字节序列,这也可能会触发。例如,在 ruby​​ 中,您可以使用删除任何无效字符

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

String#scrub可用于 ruby​​ 2.1 及以上版本

string_with_invalid_sequences.scrub
于 2013-11-05T16:13:48.433 回答
10

可能您的表设置为非 Utf8 字符集。你可以用这个 sql 来改变它:

ALTER TABLE `your_database_name`.`your_table` CONVERT TO CHARACTER SET utf8
于 2013-08-28T21:07:48.933 回答
5

你可以在这里找到答案。我不确定如何报告重复。 Mysql2::Error: 不正确的字符串值 Rails 3 UTF8

为了您的方便,让我重申一下我的回答


我最近遇到了这个问题。它本质上是 mysql 默认排序规则类型不是 utf8_unicode_ci。

请执行下列操作。如果需要,请备份您的数据。我不得不删除数据库并重新创建它

rake db:drop
rake db:create

将 mysql 数据库排序规则更改为 utf8_unicode_ci(phpMyAdmin 在这里可能会派上用场)最后,恢复您的迁移。

rake db:migrate

享受。

于 2013-06-05T08:07:22.023 回答