MySQL報(bào)錯(cuò)1118,數(shù)據(jù)類型長(zhǎng)度過(guò)長(zhǎng)問(wèn)題及解決
MySQL報(bào)錯(cuò)1118,數(shù)據(jù)類型長(zhǎng)度過(guò)長(zhǎng)
MySQL是世界上最流行的開(kāi)源關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。
MySQL提供了許多功能,從簡(jiǎn)單的數(shù)據(jù)查詢到復(fù)雜的數(shù)據(jù)操作和管理。
在MySQL的使用過(guò)程中,我們時(shí)常會(huì)遇到各種問(wèn)題,其中一個(gè)比較常見(jiàn)的問(wèn)題是報(bào)錯(cuò)1118。
接下來(lái),我們將講解MySQL報(bào)1118錯(cuò)誤的原因和解決方法。
1118錯(cuò)誤通常會(huì)在創(chuàng)建表的時(shí)候出現(xiàn),
錯(cuò)誤提示為
“Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs”。
這個(gè)錯(cuò)誤的意思是,在創(chuàng)建表時(shí),某些列的長(zhǎng)度相加超過(guò)了MySQL所允許的最大行長(zhǎng)度65535。在計(jì)算行長(zhǎng)度時(shí),除去BLOB類型的列的長(zhǎng)度,還要加上行存儲(chǔ)的開(kāi)銷。
出現(xiàn)這個(gè)錯(cuò)誤的原因是我們創(chuàng)建的表結(jié)構(gòu)中包含了太多的長(zhǎng)文本類型(如VARCHAR、TEXT),而沒(méi)有足夠的空間來(lái)存放其它列。
對(duì)于VARCHAR類型的列,MySQL需要為其分配額外的空間,以適應(yīng)其變化的字符串長(zhǎng)度。所以,當(dāng)我們?cè)诒碇惺褂么罅縑ARCHAR類型的長(zhǎng)文本時(shí),會(huì)導(dǎo)致出現(xiàn)1118錯(cuò)誤。
解決這個(gè)問(wèn)題
我們可以采用兩種方法:
一種是使用TEXT或BLOB類型的列替換VARCHAR類型的列。
由于TEXT和BLOB類型的列不需要額外的存儲(chǔ)空間,所以可以避免出現(xiàn)1118錯(cuò)誤。
但是需要注意的是,這些列不支持索引、排序、或者通配符查詢。
/** *創(chuàng)建表的時(shí)候,大概有170+的字段大部分的字段varchar(255)的長(zhǎng)度, 之前是以為字段名太長(zhǎng)的文字,然后到網(wǎng)上查找把varchar替換成text類型,也沒(méi)有嘗試, 我直接刪除一般的字段,表創(chuàng)建成功, 因?yàn)镸YSQL所允許的最大長(zhǎng)度為65535這個(gè)只是虛擬的長(zhǎng)度但是實(shí)際長(zhǎng)度完全沒(méi)有這么長(zhǎng), 我估計(jì)也只有5萬(wàn)多長(zhǎng)度 因?yàn)樽侄味己苤匾?,所以我把所有?55長(zhǎng)度全部更改成100長(zhǎng)度最終創(chuàng)建表成功?。?! */
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql 5.7 docker 主從復(fù)制架構(gòu)搭建教程
這篇文章主要為大家詳細(xì)介紹了mysql 5.7 docker 主從復(fù)制架構(gòu)搭建教程,感興趣的小伙伴們可以參考一下2016-07-07
Linux連接mysql報(bào)錯(cuò):Access denied for user ‘root’@‘localhost’(usi
這篇文章主要給大家介紹了關(guān)于Linux連接mysql數(shù)據(jù)庫(kù)報(bào)錯(cuò):Access denied for user ’root‘@’localhost‘(using password: YES)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01
MySQL 使用DQL命令查詢數(shù)據(jù)的實(shí)現(xiàn)方法
這篇文章主要介紹了MySQL 使用DQL命令查詢數(shù)據(jù)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
MySQL 8.0.19安裝詳細(xì)教程(windows 64位)
這篇文章主要介紹了MySQL 8.0.19安裝詳細(xì)教程(windows 64位),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
Mysql數(shù)據(jù)庫(kù)之常用sql語(yǔ)句進(jìn)階與總結(jié)
這篇文章主要介紹了Mysql數(shù)據(jù)庫(kù)之常用sql語(yǔ)句,總結(jié)分析了MySQL數(shù)據(jù)庫(kù)常用的查詢、條件查詢、排序、連接查詢、子查詢等相關(guān)操作技巧,需要的朋友可以參考下2019-11-11
mysql tmp_table_size和max_heap_table_size大小配置
這篇文章主要介紹了mysql tmp_table_size和max_heap_table_size大小配置,需要的朋友可以參考下2016-05-05
mysql數(shù)據(jù)庫(kù)查詢基礎(chǔ)命令詳解
這篇文章主要介紹了mysql數(shù)據(jù)庫(kù)查詢基礎(chǔ)命令,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11
MySQL函數(shù)date_format()日期格式轉(zhuǎn)換的實(shí)現(xiàn)
本文主要介紹了MySQL函數(shù)date_format()日期格式轉(zhuǎn)換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08

