mysql - 指定的 key 太长;最大 key 长度为 1000 字节

标签 mysql character-encoding joomla joomla1.5

通过 mySQL 转储导入 Joomla 1.5 数据库但出现错误“1071 - 指定的 key 太长;最大 key 长度为 1000 字节”

罪魁祸首的sql语句是:

    CREATE TABLE  `jos_core_acl_aro` (

 `id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
 `section_value` VARCHAR( 240 ) NOT NULL DEFAULT  '0',
 `value` VARCHAR( 240 ) NOT NULL ,
 `order_value` INT( 11 ) NOT NULL DEFAULT  '0',
 `name` VARCHAR( 255 ) NOT NULL ,
 `hidden` INT( 11 ) NOT NULL DEFAULT  '0',
  PRIMARY KEY (  `id` ) ,
  UNIQUE KEY (  `section_value` ,  `value` ) ,
  KEY  `jos_gacl_hidden_aro` (  `hidden` )
  ) ENGINE = MYISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT =11;

MySQL said:

   #1071 - Specified key was too long; max key length is 1000 bytes

源和目标数据库是 UTF8。我仍然不知道为什么会出现此错误:(

最佳答案

mysql 将 utf8 编码的字符存储为 3 个字节

你的 key

UNIQUE KEY (  `section_value` ,  `value` ) ,

大小为 (240 + 240) * 3 字节,大于 1000 个限制

关于mysql - 指定的 key 太长;最大 key 长度为 1000 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6157823/

相关文章:

php - mySQL SELECT 同一查询中的两行或多行

mysql - 无法找出正确的数据库设计

javascript - PHP:javascript警报,带有来自sql查询的值,进入IF条件

R - c() 意外地将命名向量的名称转换为 UTF-8。这是一个错误吗?

character-encoding - 如何在 Yii2 的迁移中将字符集设置为特定列

mysql 'ORDER BY' 加入没有值的列

java - 文本编码转换 Play 中的垃圾字符! 1.2.4 框架

php - 为什么某些值没有使用 PHP foreach 循环显示?

html - 与此类似的图库仅适用于 HTML 和 CSS 中的 joomla

jquery - MySql 的 UNION 和 ORDER