Mysql 无法创建名称中包含unicode字符的表

Mysql 无法创建名称中包含unicode字符的表,mysql,Mysql,我在【Navicate for MySQL】中创建了一个表,但无法完成 这是我的密码 CREATE table `成绩表`( `学号` char(10), `课号` char(10), `成绩` int, PRIMARY KEY(`学号`, `课号`) ) error: [SQL] CREATE table `成绩表`( `学号` char(10), `课号` char(10), `成绩` int, PRIMARY KEY(`学号`, `课号`) ) [Err] 1005 - Can't c

我在【Navicate for MySQL】中创建了一个表,但无法完成

这是我的密码

CREATE table `成绩表`(
`学号` char(10),
`课号` char(10),
`成绩` int,
PRIMARY KEY(`学号`, `课号`)
)

error:
[SQL] CREATE table `成绩表`(
`学号` char(10),
`课号` char(10),
`成绩` int,
PRIMARY KEY(`学号`, `课号`)
)

[Err] 1005 - Can't create table '成绩表' (errno: 22)
据了解,它能够处理从U+0001到U+FFFF的表名和列名的unicode-因此您看到的原因很可能需要一些挖掘:

错误消息显示
errno
22
,IIRC将其转换为
无效参数的操作系统错误代码。这反过来意味着,在MySQL本身的深处,有一个函数调用了一个它不能接受的参数

我怀疑调用的函数来自C运行时和/或操作系统,它很可能与文件系统相关

这反过来意味着它要么是一个bug,要么是MySQL与您正在使用的OS/文件系统/设置交互的一些模糊行为


我建议您一定要联系MySQL/Oracle,因为这远远超出了SO所能处理的范围。

这些字符是unicode基本多语言平面的一部分吗?带引号或不带引号的标识符中不允许使用ASCII NUL(U+0000)和补充字符(U+10000及以上)。从上面的文档链接…请发布版本(版本号) 你的MySQL@Michael:这是个好主意,但是这些字符都在BMP中。因此,除非某种规格化阻止我们看到原始的非BMP字符,否则这不是问题。如果您尝试在不使用主键的情况下创建它,它会起作用吗?