Mysql 報(bào)Row size too large 65535 的原因及解決方法
報(bào)錯(cuò)信息:Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535
向mysql的表插件一個(gè)字段 類(lèi)型為text時(shí),或修改一個(gè)字段類(lèi)型為text時(shí),報(bào)出上面的錯(cuò)誤。其實(shí)我對(duì)這個(gè)錯(cuò)誤的原因理解也不是很深,給出一些我查到的解釋吧
大意是數(shù)據(jù)表中有一個(gè)設(shè)定長(zhǎng)度為64K的字段索引,當(dāng)表中字段(不知道是字段名字還是什么)不能超過(guò)這個(gè)長(zhǎng)度,65,535所說(shuō)明的是針對(duì)的是整個(gè)表的非大字段類(lèi)型的字段的bytes總合。(網(wǎng)上查到的)
我自己的理解(也不是很清楚了,大家指出來(lái)吧):
我的理解跟上查到最后一句話(huà)的意思差不多,就是非大字段類(lèi)型的字段的bytes總和大于64K了,這個(gè)字段的bytes總和是什么呢?我還是當(dāng)他理解成字段的名字長(zhǎng)總的總和吧。非大字段是指那些字段呢,我覺(jué)得是varchar字段類(lèi)型的字段,他們的名字總和大于64K,超出mysql的檢索大小存儲(chǔ)空間時(shí)就會(huì)報(bào)錯(cuò)。
varchar我來(lái)簡(jiǎn)單說(shuō)下吧,在舊版5版本前varchar 最大存儲(chǔ)字符數(shù)是255 (說(shuō)法不算科學(xué)有興趣的自己查),在5版后 varchar就是可變長(zhǎng)度 ,就是按實(shí)際存儲(chǔ)數(shù)據(jù)的多少去劃分占用的存儲(chǔ)空間,比如varchar類(lèi)型內(nèi)的數(shù)據(jù)有50個(gè)那么它占用的存儲(chǔ)空間可能就是51個(gè) 有1個(gè)是占位符用于記錄存了多少個(gè)字符。(也許不是字段名字占了64k,而是這個(gè)字段內(nèi)記錄占位長(zhǎng)度的太多了,超過(guò)了64k這個(gè)值)就是說(shuō),你自己看看是不是你數(shù)據(jù)表里用varchar的字段類(lèi)型用得太多了。
確實(shí)是varchar用得太多了,怎么辦呢,其實(shí)上面報(bào)錯(cuò)的語(yǔ)句就有說(shuō)明,可以將屬性轉(zhuǎn)為text 或 blobs 。行不行你們自己試下吧。
為什么我的數(shù)據(jù)表上有那么多varchar呢,因?yàn)樗菍?shí)際長(zhǎng)度的感覺(jué)可以省點(diǎn)存儲(chǔ)空間,如給varchar(300)但我實(shí)際在這個(gè)字段存了10個(gè)字,那其實(shí)也只是占用了11個(gè)字符存儲(chǔ)空間,最大到300個(gè)字符。
我的解決方法:
將表中varchar(N) 中N設(shè)定小于255的屬性的字段,修改屬性為tinytext 。tinytext 在存儲(chǔ)時(shí)總是占用255個(gè)字符。是固定的占著,最大能保存的字符也只有255個(gè)。所以如果varchar(N) 這個(gè)N值特別少就可以用tinytext進(jìn)行代替。char這個(gè)大家自己考慮下能不能用吧。
以上所述是小編給大家介紹的Mysql 報(bào)Row size too large 65535 的原因及解決方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Navicat for MySQL 11注冊(cè)碼\激活碼匯總
Navicat for MySQL注冊(cè)碼用來(lái)激活 Navicat for MySQL 軟件,只要擁有 Navicat 注冊(cè)碼就能激活相應(yīng)的 Navicat 產(chǎn)品。這篇文章主要介紹了Navicat for MySQL 11注冊(cè)碼\激活碼匯總,需要的朋友可以參考下2020-11-11
MySQL安裝與創(chuàng)建用戶(hù)操作(新手入門(mén)指南)
這篇文章主要為大家介紹了MySQL安裝與創(chuàng)建用戶(hù)的使用講解是非常適合小白新手的入門(mén)學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
MySql范圍查找時(shí)索引不生效問(wèn)題的原因分析
這篇文章主要給大家介紹了關(guān)于MySql范圍查找時(shí)索引不生效問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
MySQL數(shù)據(jù)庫(kù)設(shè)計(jì)概念及多表查詢(xún)和事物操作
數(shù)據(jù)庫(kù)設(shè)計(jì)就是根據(jù)業(yè)務(wù)系統(tǒng)具體需求,結(jié)合我們所選用的DBMS,為這個(gè)業(yè)務(wù)系統(tǒng)構(gòu)造出最優(yōu)的數(shù)據(jù)存儲(chǔ)模型,本文給大家介紹MySQL數(shù)據(jù)庫(kù)設(shè)計(jì)概念及多表查詢(xún)和事物操作,感興趣的朋友一起看看吧2022-05-05
mysql中如何去除小數(shù)點(diǎn)后面多余的0
這篇文章主要介紹了mysql 中去除小數(shù)點(diǎn)后面多余的0的方法 ,需要的朋友可以參考下2014-03-03
防止服務(wù)器宕機(jī)時(shí)MySQL數(shù)據(jù)丟失的幾種方案
這篇文章主要介紹了防止服務(wù)器宕機(jī)時(shí)MySQL數(shù)據(jù)丟失的幾種方案,結(jié)合實(shí)踐介紹了Replication和Monitor以及Failover這三個(gè)項(xiàng)目的應(yīng)用,需要的朋友可以參考下2015-06-06

