【问题标题】:mysql workbench converts the nvarchar columns to varchar?mysql工作台将nvarchar列转换为varchar?
【发布时间】:2020-03-10 00:31:00
【问题描述】:

我的表格定义如下;

如果不存在则创建表test.notes (id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, clientid INT(10) NOT NULL,
userid INT(10) NOT NULL,
notes NVARCHAR(256) NULL DEFAULT NULL, createddatetime TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id)) ENGINE = InnoDB 默认字符集 = utf8;

这里的注释列我定义为 navarchar,但最后它变成了 varchar 列。我使用的是 6.3 版本。这里有什么问题?

【问题讨论】:

    标签: mysql mysql-workbench


    【解决方案1】:

    从 MySQL documentation,我们可以看到内部 MySQL 将使用 UTF-8 字符集将 NVARCHAR 映射到 VARCHAR。该文档提到以下定义都是等效的:

    VARCHAR(10) CHARACTER SET utf8
    NATIONAL VARCHAR(10)
    NVARCHAR(10)
    NCHAR VARCHAR(10)
    NATIONAL CHARACTER VARYING(10)
    NATIONAL CHAR VARYING(10)
    

    【讨论】:

    • 那么,我对 nvarchar 列的定义是否正确?我可以毫无问题地插入非英文字符(例如:日语)?
    • @Ratha 检查该列的字符集,但是是的,如果是 UTF-8,它应该能够支持日语。
    • 谢谢,它显示为 utf8。对于 varchar 列,它也显示为 utf8。我应该明确地将列定义为 nvarchar 吗?用字符集定义在模式定义中定义就足够了吗?如果不存在则创建模式 test 默认字符集 utf8 ;
    猜你喜欢
    • 2016-03-18
    • 2013-04-07
    • 2011-12-11
    • 1970-01-01
    • 2023-03-19
    • 2014-05-07
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    相关资源
    最近更新 更多