最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql索引過長Specialed key was too long的解決方法

 更新時(shí)間:2021年11月08日 11:08:39   作者:一灰灰  
在創(chuàng)建要給表的時(shí)候遇到一個(gè)有意思的問題,提示Specified key was too long; max key length is 767 bytes,本文就來介紹一下解決方法,如果你也遇到此類問題,可以參考一下

在創(chuàng)建要給表的時(shí)候遇到一個(gè)有意思的問題,提示Specified key was too long; max key length is 767 bytes,從描述上來看,是Key太長,超過了指定的 767字節(jié)限制

下面是產(chǎn)生問題的表結(jié)構(gòu)

CREATE TABLE `test_table` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(1000) NOT NULL DEFAULT '',
  `link` varchar(1000) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

我們可以看到,對(duì)于name,我們設(shè)置長度為1000可變字符,因?yàn)椴捎胾tf8mb4編碼, 所以它的大小就變成了 1000 * 4 > 767
所以再不修改其他配置的前提下,varchar的長度大小應(yīng)該是 767 / 4 = 191

有興趣的同學(xué)可以測試下,分別指定name大小為191, 192時(shí),是不是前面的可以創(chuàng)建表成功,后面的創(chuàng)建表失敗,并提示錯(cuò)誤Specified key was too long; max key length is 767 bytes

解決辦法一

  • 使用innodb引擎
  • 啟用innodb_large_prefix選項(xiàng),修改約束擴(kuò)展至3072字節(jié)
  • 重新創(chuàng)建數(shù)據(jù)庫

my.cnf配置

set global innodb_large_prefix=on;
set global innodb_file_per_table=on;
set global innodb_file_format=BARRACUDA;
set global innodb_file_format_max=BARRACUDA;

上面這個(gè)3072字節(jié)的得出原因如下

我們知道InnoDB一個(gè)page的默認(rèn)大小是16k。由于是Btree組織,要求葉子節(jié)點(diǎn)上一個(gè)page至少要包含兩條記錄(否則就退化鏈表了)。
所以一個(gè)記錄最多不能超過8k。又由于InnoDB的聚簇索引結(jié)構(gòu),一個(gè)二級(jí)索引要包含主鍵索引,因此每個(gè)單個(gè)索引不能超過4k (極端情況,pk和某個(gè)二級(jí)索引都達(dá)到這個(gè)限制)。
由于需要預(yù)留和輔助空間,扣掉后不能超過3500,取個(gè)“整數(shù)”就是(1024*3)。

解決辦法二

在創(chuàng)建表的時(shí)候,加上 row_format=DYNAMIC

CREATE TABLE `test_table` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL DEFAULT '',
  `link` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 row_format=DYNAMIC;

這個(gè)參數(shù)的作用如下

MySQL 索引只支持767個(gè)字節(jié),utf8mb4 每個(gè)字符占用4個(gè)字節(jié),所以索引最大長度只能為191個(gè)字符,即varchar(191),若想要使用更大的字段,mysql需要設(shè)置成支持?jǐn)?shù)據(jù)壓縮,并且修改表屬性 row_format ={DYNAMIC|COMPRESSED}

到此這篇關(guān)于mysql索引過長Specialed key was too long的解決方法的文章就介紹到這了,更多相關(guān)mysql索引過長內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL數(shù)據(jù)庫的實(shí)時(shí)備份知識(shí)點(diǎn)詳解

    MySQL數(shù)據(jù)庫的實(shí)時(shí)備份知識(shí)點(diǎn)詳解

    本篇文章給大家分享了關(guān)于MySQL數(shù)據(jù)庫的實(shí)時(shí)備份知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以參考下。
    2018-08-08
  • 解決Navicat for Mysql連接報(bào)錯(cuò)1251的問題(連接失敗)

    解決Navicat for Mysql連接報(bào)錯(cuò)1251的問題(連接失敗)

    記得在之前給大家介紹過Navicat for Mysql連接報(bào)錯(cuò)的問題,可能寫的不夠詳細(xì),今天在稍作修改補(bǔ)充下,對(duì)Navicat for Mysql連接報(bào)錯(cuò)1251問題感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • MySQL存儲(chǔ)過程的概念與用法實(shí)例

    MySQL存儲(chǔ)過程的概念與用法實(shí)例

    我們常用的操作數(shù)據(jù)庫語言SQL語句在執(zhí)行的時(shí)候需要要先編譯,然后執(zhí)行,而存儲(chǔ)過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,下面這篇文章主要給大家介紹了關(guān)于MySQL存儲(chǔ)過程的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • mysql 8.0.17 安裝圖文教程

    mysql 8.0.17 安裝圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.17 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • mysql觸發(fā)器trigger實(shí)例詳解

    mysql觸發(fā)器trigger實(shí)例詳解

    MySQL好像從5.0.2版本就開始支持觸發(fā)器的功能了,本次博客就來介紹一下觸發(fā)器,首先還是談下概念性的東西吧,需要的朋友可以參考下
    2021-03-03
  • MySQL學(xué)習(xí)第三天 Windows 64位操作系統(tǒng)下驗(yàn)證MySQL

    MySQL學(xué)習(xí)第三天 Windows 64位操作系統(tǒng)下驗(yàn)證MySQL

    MySQL學(xué)習(xí)第三天教大家如何在Windows 64位操作系統(tǒng)下驗(yàn)證MySQL,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Prometheus 監(jiān)控MySQL使用grafana展示

    Prometheus 監(jiān)控MySQL使用grafana展示

    這篇文章主要介紹prometheus通過mysql exporter+node exporter監(jiān)控mysql,并使用grafana進(jìn)行圖表展示的相關(guān)內(nèi)容,感興趣的效果版可以參考下文
    2021-08-08
  • 解決MySQL this is incompatible with sql_mode=only_full_group_by 問題

    解決MySQL this is incompatible with s

    本文主要介紹了解決MySQL this is incompatible with sql_mode=only_full_group_by 問題,出現(xiàn)這個(gè)問題是因?yàn)?對(duì)于GROUP BY操作,如果在SELECT中的列,沒有在GROUP BY中出現(xiàn),那么這個(gè)SQL是不合法的,因?yàn)榱胁辉贕ROUP BY從句中,下面就來了解一下
    2024-08-08
  • 一篇文章講解清楚MySQL索引

    一篇文章講解清楚MySQL索引

    這篇文章主要用一篇文章講解清楚MySQL索引的相關(guān)資料,十分的細(xì)致全面,推薦給大家,需要的朋友可以參考下
    2022-10-10
  • MySQL簡單了解“order by”是怎么工作的

    MySQL簡單了解“order by”是怎么工作的

    在MySQl中ORDER BY 語句用于對(duì)結(jié)果集進(jìn)行排序,那么它是怎么工作的,以及如何優(yōu)化,下面由小編跟大家講一講
    2019-05-05

最新評(píng)論

南安市| 昭苏县| 丰都县| 板桥市| 杂多县| 法库县| 宝兴县| 尉犁县| 林甸县| 扎鲁特旗| 新郑市| 望谟县| 资兴市| 商南县| 丁青县| 从江县| 灵宝市| 临安市| 茂名市| 石城县| 刚察县| 鱼台县| 梨树县| 深水埗区| 罗源县| 成安县| 特克斯县| 桂东县| 潍坊市| 广南县| 康乐县| 兰西县| 赣榆县| 铜山县| 乐陵市| 新余市| 宿松县| 吉木乃县| 凭祥市| 沈阳市| 武定县|