解决方法:使MySQL列名长于64个字符

我正在从一个应用程序dynamic生成从Excel文件的MySQL表。

目前我被卡住了,因为Excel文件中的一些列名有超过64个字符,而在MySQL中,列名的最大长度是64个字符。

我想设置另一个表来存储列名,但是我将不得不执行一些联合操作来检索它们。

有没有什么聪明的方法来解决这个问题?

MySQL是一个开源项目。 您可以下载源代码 ,更改内容并构build自己的版本。

我没有阅读MySQL源码,但是标识符的最大长度是一个编译时常量的几率是很好的。 它可能就像find这个常量一样简单,改变它并重新编译。 (虽然简单并不一定意味着容易 。)

在PostgreSQL中确实很简单。 PostgreSQL文档甚至会告诉你这个常量的名字和它所在的文件(NAMEDATALEN,在src / include / pg_config_manual.h中)

就个人而言,我认为你最好修复Excel列名以符合MySQL的限制。

没有其他方法可以将列大小的长度增加到64以上。这里有一些标准。 你不能超越这个限制。

Identifier Maximum Length (characters) Database 64 Table 64 Column 64 Index 64 Constraint 64 Stored Program 64 View 64 Alias 256 Compound Statement Label 16 

而你不能通过连接操作来检索列名。 通过连接操作你只能实现2个或更多表的数据。 解决你的问题是你应该截断excel中的列名已经在导出到MySQL之前。