gpt4 book ai didi

Mysql2::错误:不正确的字符串值 Rails 3 UTF8

转载 作者:行者123 更新时间:2023-11-29 01:11:38 26 4
gpt4 key购买 nike

我有一个应用程序可以处理大量其他语言的数据(网页标题和元描述)。我最近从 MySQL 切换到 Percona,并发现了 MySQL 似乎已经悄悄出错的所有错误。

我唯一没能修复的是

ActiveRecord::StatementInvalid: Mysql2::Error: Incorrect string value: 

我查看了当前的问题和答案,但它们都采用已知编码转换为 UTF8,我不知道编码。

我想做的是让 Rails 将其转换为 UTF8(我试过 force_encoding 但没有用)或者我想检查它是否是 UTF8,如果不是,则将其删除。

最佳答案

我在尝试将 unicode 表情符号插入 mysql 数据库时遇到了这个问题……您可能认为使用 utf8 是安全的,但事实并非如此。 Emoji用了4个字节,而utf8只用了3个字节。解决方案是使用utf8mb4编码和整理。

你可以通过首先更新你的 database.yml 来做到这一点

development:
adapter: mysql2
database: my_database
username: a_user
password: the_password
encoding: utf8mb4
collation: utf8mb4_unicode_ci

如果你有一个现有的数据库,你需要运行这个sql:

ALTER TABLE `[table]` 
CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin,
MODIFY [column] VARCHAR(250)
CHARACTER SET utf8mb4 COLLATE utf8mb4_bin

如果你还没有发布到生产环境,你可以这样做

bundle exec rake db:drop db:create db:migrate

Shamelessly taken from Jason Seifer

关于Mysql2::错误:不正确的字符串值 Rails 3 UTF8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14039918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com