MySQL更改密钥的长度

MySQL更改密钥的长度,mysql,Mysql,简单的问题。如果我有如下表格: CREATE TABLE `exampletable` ( `id` int(11) NOT NULL AUTO_INCREMENT, `textfield` varchar(700) DEFAULT NULL, PRIMARY KEY (`id`), KEY `textfield` (`textfield`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; 如何更改textfield键的长度?对于latin1ch

简单的问题。如果我有如下表格:

CREATE TABLE `exampletable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `textfield` varchar(700) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `textfield` (`textfield`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
如何更改
textfield
键的长度?对于
latin1
charset,默认长度为767,对于UTF8,默认长度为255。但是,如果我有一个
latin1
表,例如,如何更改键以强制最大长度为255?

试试看

  ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(255);
altertablemodifyvarchar(255);
确保您的字符数不超过255个

试试看

  ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(255);
altertablemodifyvarchar(255);

确保您的字符数不超过255个

您可以在
VARCHAR(x)
列的前导部分创建索引。请看这里:

这将有助于搜索。但作为主键或使用
groupby
时,它并不有用

您还可以在表定义中包括以下内容:

CREATE TABLE exampletable (
  id int(11) NOT NULL AUTO_INCREMENT,
  textfield varchar(700) DEFAULT NULL,
  PRIMARY KEY (id),
  KEY partial_textfield (textfield(10))
) 

您可以在
VARCHAR(x)
列的前导部分创建索引。请看这里:

这将有助于搜索。但作为主键或使用
groupby
时,它并不有用

您还可以在表定义中包括以下内容:

CREATE TABLE exampletable (
  id int(11) NOT NULL AUTO_INCREMENT,
  textfield varchar(700) DEFAULT NULL,
  PRIMARY KEY (id),
  KEY partial_textfield (textfield(10))
) 

正如我从你的帖子中了解到的,如果不更改列本身的长度,就不可能更改键的长度?不。长度检查在列上。。。键是从列中“派生”出来的…正如我从你的帖子中了解到的,如果不更改列本身的长度,就不可能更改键的长度?不。长度检查在列上。。。键是从列“派生”的。。。