专注各种脚本编程
Baidu
加入收藏夹
本站内容有下面分类知识,欢迎您的到来^_^
shell相关:指令篇 基础篇 脚本欣赏 编程实例 shell问问 shell视频教程 技巧篇 水平测试 E文资料 vi编辑器 高级Bash脚本编程指南
其他:mysql perl c语言 oracle
当前位置:| 主页>mysql>

转换表引擎的时候出错的解决方法?

百度收藏 QQ搜藏

数据库:Mysql,使用的该表引擎:MYISAM引擎.
由于需要对该表进行频繁地读取和写入比较,造成数据表损坏,现在想把该表转换成INNODB引擎,不过在转换的过程中出错,出现以下提示:

Can't convert link_pix_200707: Error Specified key was too long; max key length is 767 bytes。

该表目前结构:
-- 该表的结构 `link_xp`
CREATE TABLE `link_xp` (
  `photo_id` bigint(20) NOT NULL,
  `owner_id` bigint(20) NOT NULL DEFAULT '0',
  `domain` varchar(255) NOT NULL,
  `referer_url` text NOT NULL,

  PRIMARY KEY (`photo_id`,`referer_url`(300)),
  KEY `owner_id` (`owner_id`)
   ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
通过测试大概是由于联合索引的字段长度过长引起的,如果我们主索引删除就可以成功转换,但是转换INNODB成功后,又不能添加该索引?

解决方案:
这个不是mysql版本的造成问题,而是由于表link_xp的“referer_url”字段内容的长度大于767 bytes,数据库编码是UTF8,一个UTF8等于3个字节。 把“referer_url” 字段内容长度大于767 bytes的截断就ok了。

上一篇:增加连接错误数解除MySQL屏蔽主机 下一篇:mysql出现Unknown command提示的问题

power by soyo123 2007-2008