转换表引擎的时候出现“Error Specified key was too long”?

huifeideluotuo
转换表引擎的时候出现“Error Specified key was too long”?

现在使用的这个表是MYISAM引擎,考虑到该表的读取和写入比较频繁,数据表总是损坏,所以现在想把该表转换成INNODB引擎,在转换的过程中,出现以下错误提示:

[color=black]在转换数据表引擎的时候,出现:[/color]
[color=red]Can't convert link_pix_200707: Error Specified key was too long; max key length is 767 bytes。[/color]
[color=#ff0000][/color]
[color=#ff0000]该表目前结构:[/color]

-- 表的结构 `link_pix_200707`
--
CREATE TABLE `link_pix_200707` (
  `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成功后,又不能添加该索引?

兄弟们帮忙看看,有什么好的解决方案?
谢谢了!

yueliangdao0608
I didn't get any errors.
What is your version?

huifeideluotuo
问题已经解决,不是mysql版本的问题,

是由于我的 “referer_url” 字段内容的长度大于  767 bytes ,数据库编码是UTF8,一个UTF8等于3个字节。 把“referer_url” 字段内容长度大于  767 bytes 的截断就ok了。

多谢,版主关心!

[[i] 本帖最后由 huifeideluotuo 于 2008-6-4 15:42 编辑 [/i]]