[Err] 1071 - Specified key was too long; max key length is 767 bytes
[Err] CREATE TABLE `jc_file` (
  `file_path` varchar(255) NOT NULL default '' COMMENT '文件路径',
  `file_name` varchar(255) default '' COMMENT '文件名字',
  `file_isvalid` tinyint(1) NOT NULL default '0' COMMENT '是否有效',
  `content_id` int(11) default NULL COMMENT '内容id',
  PRIMARY KEY  (`file_path`),
  KEY `fk_jc_file_content` (`content_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
[Msg] Finished - Unsuccessfully
--------------------------------------------------
这是我导入一个.sql文件的出错信息。这个要怎么弄呢?
MySQLError

解决方案 »

  1.   

    我看了网上说的是由于字符集的问题,但是我改了latin1、gbk、utf8都还是同样的错误。
    然后我把'file_path' varchar(255)改为varchar(100)   就做了这么一个改动。然后Excute sql file就出现下面的错误:[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '# MySQL-Front 5.1  (Build 4.2)/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */' at line 1
    [Err] # MySQL-Front 5.1  (Build 4.2)/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */;
    [Msg] Finished - Unsuccessfully
    --------------------------------------------------
      

  2.   

    mysql> CREATE TABLE `jc_file` (   `file_path` varchar(255) NOT NULL default '' C
    OMMENT '文件路径',   `file_name` varchar(255) default '' COMMENT '文件名字',   `
    file_isvalid` tinyint(1) NOT NULL default '0' COMMENT '是否有效',   `content_id`
     int(11) default NULL COMMENT '内容id',   PRIMARY KEY  (`file_path`),   KEY `fk_
    jc_file_content` (`content_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    Query OK, 0 rows affected (0.17 sec)mysql>
    Specified key was too long;max key length is 767 bytes. 出现这个问题检查1)字符集是否是UTF8,UTF8下一个字符占三个字节,lanti1只占一个字节 2)存储引擎是否是INNODB,INNODB才有这个限制。
      

  3.   

    CREATE TABLE `samp_db`.`jc_file2` (
      `file_path` VARCHAR(255) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL COMMENT '文件路径',
      `file_name` VARCHAR(255) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL COMMENT '文件名字',
      `file_isvalid` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否有效',
      `content_id` INTEGER UNSIGNED NOT NULL COMMENT '内容id',
      PRIMARY KEY  USING BTREE(`file_path`)
    )
    ENGINE = InnoDB
    CHARACTER SET gbk COLLATE gbk_chinese_ci;试试吧,我是可以成功的
      

  4.   

    PRIMARY KEY  (`file_path`)  varchar(255) 作主键不宜