mysql specified key was too long與Index column size too large. The maximum column size is 767 bytes.

jzy3711發表於2018-11-27

第一個問題:要設定utf-8就好;

Index column size too large. The maximum column size is 767 bytes.

第一步:use 進入資料庫

執行:

set global innodb_file_format = BARRACUDA;

set global innodb_large_prefix = ON;

第二步:執行

CREATE TABLE `app_item_rank_increment_hour` (
  `at` varchar(20) NOT NULL,
  `appv` varchar(20) NOT NULL,
  `channel` varchar(20) NOT NULL,
  `item_id` varchar(50) NOT NULL,
  `rise` int(11) DEFAULT NULL,
  `current_rank` int(11) DEFAULT NULL,
  `day` int(10) NOT NULL,
  `hour` int(10) NOT NULL,
  `item_url` varchar(300) NOT NULL,
  `item_title` varchar(150) NOT NULL,
  PRIMARY KEY (`at`,`appv`,`channel`,`item_id`,`day`,`hour`,`item_title`,`item_url`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

標紅為修改部分;

注意:使用圖片中的方式在載入,會影響後面的表加入,如果不想影響可以進入mysql

使用source 命令載入,執行影響整一個表,不會影響後面的表

但一樣不建議是用這種方式,這個引數會改了儲存引擎的格式型別

最好檢查mysql版本,使用相同版本則不會出現問題,

我是用的是5.6的版本,原sql使用的5.7的班版本,後面發現只要使用5.7以上的版本就不會出現這個問題

相關文章