Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 索引列大小太大。最大列大小为767字节。-对于INT数据类型?_Mysql_Innodb - Fatal编程技术网

Mysql 索引列大小太大。最大列大小为767字节。-对于INT数据类型?

Mysql 索引列大小太大。最大列大小为767字节。-对于INT数据类型?,mysql,innodb,Mysql,Innodb,我知道innodb对密钥大小施加了限制,但是INT CREATE TABLE IF NOT EXISTS `db`.`TAGS` ( `tag_id` INT( 11 ) NOT NULL , `tag_text` VARCHAR( 700 ) NULL , `date_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , `xxx_id` INT( 11 ) NOT NULL COMMENT 'This is for

我知道innodb对密钥大小施加了限制,但是INT

    CREATE TABLE IF NOT EXISTS  `db`.`TAGS` (

 `tag_id` INT( 11 ) NOT NULL ,
 `tag_text` VARCHAR( 700 ) NULL ,
 `date_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
 `xxx_id` INT( 11 ) NOT NULL COMMENT  'This is for ease of reference lookup later',
 `user_id` INT( 11 ) NOT NULL ,
 `TAG_FACT_RELATION_relation_id` INT NOT NULL ,
PRIMARY KEY (  `tag_id` ) ,
UNIQUE INDEX  `tag_UNIQUE` (  `tag_text` ASC ) ,
UNIQUE INDEX  `tag_id_UNIQUE` (  `tag_id` ASC ) ,
INDEX  `fk_TAGS_TAG_FACT_RELATION1_idx` (  `TAG_FACT_RELATION_relation_id` ASC ) ,
CONSTRAINT  `fk_TAGS_TAG_FACT_RELATION1` FOREIGN KEY (  `TAG_FACT_RELATION_relation_id` ) REFERENCES  `meepl`.`TAG_FACT_RELATION` (
`relation_id`
) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE = INNODB;
错误是这样的:

#1709 - Index column size too large. The maximum column size is 767 bytes. 

有什么想法吗?多年来,我一直在研究数据类型

有点晚了,但我也遇到了类似的问题

您的
tag_text
列具有唯一的索引,这是导致问题的原因,而不是INT数据类型

通过启用innodb_large_前缀设置,更改MySql安装以启用更大的索引列


除了创建索引手册的@juergend摘录之外,请参见关于
tag_text
的内容:注意前缀限制以字节为单位,而CREATE INDEX语句中的前缀长度被解释为非二进制数据类型(CHAR、VARCHAR、text)的字符数。当为使用多字节字符集的列指定前缀长度时,请考虑这一点。谢谢,是的,它看起来像tag_文本。如何在不使用VARCHAR(100)的情况下修复此问题?我是否应该将其作为索引删除?您可以设置前缀长度,即
UNIQUE index tag\u UNIQUE(tag\u text(150)),…
列的前150个字符必须是唯一的,这可能会占用600字节。可能的重复可能还需要将特定表的行格式更改为动态。感谢这是一个很大的帮助。太多的Unque_索引约束为我引发了此错误。