我知道这个标题的问题以前已经回答过了,但请继续阅读。在发帖之前,我已经彻底阅读了关于这个错误的所有其他问题/答案。
我收到以下查询的上述错误:
CREATE TABLE IF NOT EXISTS `pds_core_menu_items` (
`menu_id` varchar(32) NOT NULL,
`parent_menu_id` int(32) unsigned DEFAULT NULL,
`menu_name` varchar(255) DEFAULT NULL,
`menu_link` varchar(255) DEFAULT NULL,
`plugin` varchar(255) DEFAULT NULL,
`menu_type` int(1) DEFAULT NULL,
`extend` varchar(255) DEFAULT NULL,
`new_window` int(1) DEFAULT NULL,
`rank` int(100) DEFAULT NULL,
`hide` int(1) DEFAULT NULL,
`template_id` int(32) unsigned DEFAULT NULL,
`alias` varchar(255) DEFAULT NULL,
`layout` varchar(255) DEFAULT NULL,
PRIMARY KEY (`menu_id`),
KEY `index` (`parent_menu_id`,`menu_link`,`plugin`,`alias`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
有谁知道为什么和如何修复它吗?问题是-同样的查询在我的本地机器上运行得很好,在我之前的主机上也运行得很好。顺便说一句,它来自一个成熟的项目- phpdevshell -所以我猜这些家伙知道他们在做什么,尽管你永远不会知道。
任何线索都很感谢。
我使用的是phpMyAdmin。
发布于 2012-01-06 01:50:30
此错误表示索引index
的长度大于1000个字节。MySQL和存储引擎可能有此限制。我在MySQL 5.5上得到了类似的错误-‘指定的密钥太长;最大密钥长度是3072字节’,当运行这个脚本时:
CREATE TABLE IF NOT EXISTS test_table1 (
column1 varchar(500) NOT NULL,
column2 varchar(500) NOT NULL,
column3 varchar(500) NOT NULL,
column4 varchar(500) NOT NULL,
column5 varchar(500) NOT NULL,
column6 varchar(500) NOT NULL,
KEY `index` (column1, column2, column3, column4, column5, column6)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
UTF8为多字节,密钥长度计算方式为- 500 *3*6= 9000字节。
但请注意,下一个查询可以正常工作!
CREATE TABLE IF NOT EXISTS test_table1 (
column1 varchar(500) NOT NULL,
column2 varchar(500) NOT NULL,
column3 varchar(500) NOT NULL,
column4 varchar(500) NOT NULL,
column5 varchar(500) NOT NULL,
column6 varchar(500) NOT NULL,
KEY `index` (column1, column2, column3, column4, column5, column6)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
...because我使用了CHARSET=latin1,在本例中,密钥长度为500 *6= 3000字节。
发布于 2014-04-05 03:49:32
在创建或更改表之前运行此查询。
SET @@global.innodb_large_prefix = 1;
这会将最大密钥长度设置为3072字节
发布于 2018-09-05 16:28:07
我也面临着同样的问题,使用下面的查询来解决它。
在创建DB时,您可以使用utf-8编码
例如:create database my_db character set utf8 collate utf8mb4;
编辑:(考虑来自评论的建议)将utf8_bin更改为utf8mb4
https://stackoverflow.com/questions/8746207
复制相似问题