代码之家  ›  专栏  ›  技术社区  ›  Rosamunda

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

  •  0
  • Rosamunda  · 技术社区  · 5 年前

    我正在尝试更改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在数据库中不是保存程序。所以我想我也应该换一个字符集。

    0 回复  |  直到 5 年前
        1
  •  0
  •   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;