mysql工作台将nvarchar列转换为varchar?
我已将我的表格定义如下: 如果不存在,则创建表mysql工作台将nvarchar列转换为varchar?,mysql,mysql-workbench,Mysql,Mysql Workbench,我已将我的表格定义如下: 如果不存在,则创建表测试注释(idINT(10) 无符号非空自动增量,clientidINT(10)非空, useridINT(10)不为空, notesNVARCHAR(256)NULL默认为NULL,createddatetimeTIMESTAMP 非空默认当前时间戳,主键(id)引擎=InnoDB默认字符集=utf8 在这里,我将notes列定义为navarchar,但最后它变为varchar列。我使用的是6.3版本。这里出了什么问题?从MySQL中,我们可以看到
测试注释(id
INT(10)
无符号非空自动增量,clientid
INT(10)非空,
userid
INT(10)不为空,
notes
NVARCHAR(256)NULL默认为NULL,createddatetime
TIMESTAMP
非空默认当前时间戳,主键(id
)引擎=InnoDB默认字符集=utf8
在这里,我将notes列定义为navarchar,但最后它变为varchar列。我使用的是6.3版本。这里出了什么问题?从MySQL中,我们可以看到,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;