ERROR 1071 (42000)

[ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes]

刚买的阿里云数据库想导入表结果发现报如上错,上网搜索原因提示需要我这样做:

mysql> show variables like '%innodb_large_prefix%';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| innodb_large_prefix | OFF   |
+---------------------+-------+
1 row in set (0.00 sec)
mysql> set global innodb_large_prefix=on;
Query OK, 0 rows affected (0.00 sec)

操作完这一步我就以为可以了,于是又建表

mysql> create table InfoTab(
	peerId varchar(255) not null,
	primary key(peerId)
)ENGINE=InnoDB, DEFAULT CHARSET=utf8mb4;
1709 - Index column size too large. The maximum column size is 767 bytes.
##呀哈,说我列的长度定长了,只能767bytes,算一下就是191.75位,于是我
mysql> create table InfoTab(
	peerId varchar(191) not null,
	primary key(peerId)
)ENGINE=InnoDB, DEFAULT CHARSET=utf8mb4;
Query OK, 0 rows affected

##那不行,继续上网找答案
##..........A Thousand Years Later
##找了一圈长知识了知道了为啥不能超过这么多位的数据库:
https://blog.csdn.net/LJFPHP/article/details/97136296
#最后修改了索引对应的列长度
mysql> create table InfoTab(
	peerId varchar(20) not null,
	primary key(peerId)
)ENGINE=InnoDB, DEFAULT CHARSET=utf8mb4;
Query OK, 0 rows affected

感谢:https://www.cnblogs.com/kerrycode/p/9680881.html和https://blog.csdn.net/LJFPHP/article/details/97136296的文章,让我学到了新知识

おすすめ

転載: blog.csdn.net/qq_43535595/article/details/121835034