gpt4 book ai didi

mysql - 更改 mySQL 字符集时出错?

转载 作者:行者123 更新时间:2023-11-29 15:18:04 25 4
gpt4 key购买 nike

我正在尝试将 mySQL 数据库(版本 5.6.45)中的字段从 utf8 更改为 utf8mb4,以便能够发布表情符号。

这就是我正在做的事情:

ALTER TABLE contenidos CHANGE COLUMN titulo varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

但我也尝试过(结果相同),这个:

ALTER TABLE contenidos CHANGE COLUMN titulo CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

ALTER TABLE contenidos CHANGE COLUMN titulo varchar(500) CHARACTER SET utf8mb4;

我不断收到此错误:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use

near 'CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci' at line 3

如果我从 phpmyadmin 更改排序规则,我可以做到这一点,但它似乎不起作用,因为表情符号在数据库中不保存。所以我想我也应该更改字符集。

最佳答案

在此处查看 ALTER TABLE 的语法:https://dev.mysql.com/doc/refman/5.6/en/alter-table.html

如果您使用 CHANGE COLUMN,则后面加上列的当前名称,那么您必须重新命名该列,即使您不更改名称。

ALTER TABLE contenidos CHANGE COLUMN titulo 
titulo varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

原因是 CHANGE COLUMN 允许您更改列名称。如果您想这样做,您可以命名要更改的列,然后命名新名称。

ALTER TABLE contenidos CHANGE COLUMN <old_name> <new_name> <data-type> ...

CHANGE COLUMN 的语法要求您提供两个名称,即使它们相同。

替代方案:使用 MODIFY COLUMN,它不允许更改列名,但允许更改其他列属性,包括字符集。因此您只需列出一次列名称。

ALTER TABLE contenidos MODIFY COLUMN titulo 
varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

顺便说一句,每种排序规则仅适用于一种字符集,因此您无需同时指定两者。通过指定排序规则,这将在必要时隐式更改字符集。

ALTER TABLE contenidos MODIFY COLUMN titulo 
varchar(500) COLLATE utf8mb4_general_ci;

关于mysql - 更改 mySQL 字符集时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59544152/

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