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與PHP的基礎(chǔ)與應(yīng)用專題之增刪改查
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開(kāi)發(fā),屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,本系列將帶你掌握php與mysql的基礎(chǔ)應(yīng)用,本篇從數(shù)據(jù)庫(kù)的增刪改查開(kāi)始2022-02-02
mysql查詢過(guò)去24小時(shí)內(nèi)每小時(shí)數(shù)據(jù)量的方法(精確到分鐘)
我們經(jīng)常遇到類似這樣的需求,查詢最近N秒、N分鐘、N小時(shí)的數(shù)據(jù)及N天的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于mysql查詢過(guò)去24小時(shí)內(nèi)每小時(shí)數(shù)據(jù)量(精確到分鐘)的相關(guān)資料,需要的朋友可以參考下2023-03-03
SQL中l(wèi)imit函數(shù)語(yǔ)法與用法(MYSQL獲取限制某行數(shù)據(jù))
limit是MySql的內(nèi)置函數(shù),一般用于查詢表中記錄的條數(shù),作用是用于限制查詢條數(shù),下面這篇文章主要給大家介紹了關(guān)于SQL中l(wèi)imit函數(shù)語(yǔ)法與用法的相關(guān)資料,詳細(xì)講了MYSQL獲取限制某行數(shù)據(jù)的方法,需要的朋友可以參考下2022-08-08
MySQL修改默認(rèn)存儲(chǔ)引擎的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇MySQL修改默認(rèn)存儲(chǔ)引擎的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
MySQL優(yōu)化之表結(jié)構(gòu)優(yōu)化的5大建議(數(shù)據(jù)類型選擇講的很好)
很多人都將 數(shù)據(jù)庫(kù)設(shè)計(jì)范式 作為數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)“圣經(jīng)”,認(rèn)為只要按照這個(gè)范式需求設(shè)計(jì),就能讓設(shè)計(jì)出來(lái)的表結(jié)構(gòu)足夠優(yōu)化,既能保證性能優(yōu)異同時(shí)還能滿足擴(kuò)展性要求2014-03-03

