登录 主页

在服务器端的个人博客上面增加文章,但是一直报错(据库表中的 title 列无法正确存储特定的字符)

2023-08-09 03:54PM

 在服务器端的个人博客上面增加文章点击保存之后,报错说:

ActiveRecord::StatementInvalid in ArticlesController#create
Mysql2::Error: Incorrect string value: '\xE4\xB8\xADrea...' for column 'title' at row 1: INSERT INTO articles (title, content, created_at, updated_at) VALUES ('GitHub中readme.md文件的编辑和使用', '<p>链接<br />\r\n<span style="background-color:#ffffff; color:#4d4d4d; font-family:-apple-system,"SF UI Text",Arial,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif,SimHei,SimSun; font-size:16px"> </span></p>\r\n', '2023-08-07 09:03:00', '2023-08-07 09:03:00')
Extracted source (around line #21):

错误消息中提到了 Mysql2::Error: Incorrect string value: '\xE4\xB8\xADrea...' for column 'title' at row 1,这表明在插入数据时,title 列遇到了无法正确处理的字符。

可能是由于数据库表的字符集不支持该特定字符引起的 ,可以根据下面的方法尝试解决:

1. 先登录mysql数据库

sudo mysql -u root -p

2. 检查数据库字符集:确保数据库表的字符集和校对规则(collation)正确设置。可以使用以下命令检查当前的字符集设置:

SHOW VARIABLES LIKE 'character_set_database';
HOW VARIABLES LIKE 'collation_database';

3. 如果字符集和校对规则不正确,可以使用以下命令更改它们(例如,将字符集设置为 utf8mb4

执行以下命令来更改数据库的字符集和校对规则:

ALTER DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

your_database_name 替换为实际的数据库名称。

这将将数据库的字符集更改为 utf8mb4,校对规则更改为 utf8mb4_unicode_ci,以支持存储更广泛的字符。

4. 在更改了数据库的字符集和校对规则后,您还需要更新相关表的字符集和校对规则,以确保它们与数据库一致。

1)首先,选择要更改表的数据库:

USE your_database_name;

your_database_name 替换为实际的数据库名称。

2)然后,执行以下命令以更改表的字符集和校对规则。假设要更改表 articles 的字符集和校对规则:

ALTER TABLE articles CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

这将将表 articles 的字符集和校对规则更改为与数据库一致的值。

根据需要,可能还需要对其他表执行类似的操作,以确保所有表的字符集和校对规则与数据库一致。(我的到这里就差不多了,然后重启服务器在浏览器刷新页面就可以了)

注意:在执行任何数据库操作之前,请务必备份您的数据库以防止意外数据丢失。

返回>>

登录

请登录后再发表评论。

评论列表:

目前还没有人发表评论