Py学习  »  DATABASE

在mySQL中更改字符集时出错?

Rosamunda • 5 年前 • 1475 次点击  

我正在尝试更改mySQL数据库(ver。5.6.45)从utf8到utf8mb4,以便能够发布emojis。

这就是我要做的:

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-您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以获得正确的语法

如果我从phpmyadmin更改排序规则,我可以这样做,但它似乎不起作用,因为emojis在数据库中不是保存程序。所以我想我也应该换一个字符集。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55490
 
1475 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Bill Karwin
Reply   •   1 楼
Bill Karwin    5 年前

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

即使你不改名字。

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

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

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

替代方法:使用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;