# 问题描述:
使用navicat数据传输,从oracle向mysql导入数据报错 Key specification without a key length
# 问题解决
参考:sql - MySQL error: key specification without a key length - Stack Overflow
两种情况:
1. Text / BLOB 类型
Text / BLOB类型做主键,需要设置主键长度
2. 非 Text / BLOB 类型
VARCHAR类型做主键,MySQL限制最大长度为256
如果长度超过256,MySQL会将类型转为SMALLTEXT,导致报错
# 补充:
varchar, nvarchar对比
Varchar(n):n介于1-8000之间,存储大小为输入数据的字节实际长度
NVarchar(n):n介于1-4000之间,存储大小为输入字符个数的两倍(N表示存储的为Unicode类型字符,所有字符都用双字节表示,英文中文均为双字节)
结论:字段值为英文,选择varchar;字段值多为中文(双字节)