社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

在tinytext列上使用主键创建表导致错误:mysql 1071'指定的键太长;最大键长度为255字节'

c00000fd • 5 年前 • 1531 次点击  

我已经有一段时间没有编写PHP了。我的网站,我以前用PHP编写的,它是从一家共享的主机公司运行的,当脚本通过 mysql_query :

CREATE TABLE tbl (idx TINYTEXT, PRIMARY KEY(idx(255)))

错误本身:

mysql 1071'指定的密钥太长;最大密钥长度为255字节'

它工作了很多年。现在有什么问题?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38929
 
1531 次点击  
文章 [ 2 ]  |  最新文章 5 年前
sticky bit
Reply   •   1 楼
sticky bit    5 年前

您可以查询目录,尤其是 information_schema.character_sets table 获取给定字符集中字符的最大长度。从中可以计算不超过255字节的最大字符数。

SELECT floor(255 / maxlen) maxcharlen
       FROM information_schema.character_sets
       WHERE character_set_name = @@character_set_database;

然后你可以修改你的 CREATE 基于该值的语句。

Gordon Linoff
Reply   •   2 楼
Gordon Linoff    5 年前

如果最大密钥长度为255字节,并且您使用的是UTF8编码,那么每个字符最多可以是4个字节。

因此,最大为63字节。这项工作:

CREATE TABLE tbl (
    idx TINYTEXT,
    PRIMARY KEY (idx(63))
);