MySQL報錯1118,數(shù)據(jù)類型長度過長問題及解決
MySQL報錯1118,數(shù)據(jù)類型長度過長
MySQL是世界上最流行的開源關系型數(shù)據(jù)庫管理系統(tǒng)。
MySQL提供了許多功能,從簡單的數(shù)據(jù)查詢到復雜的數(shù)據(jù)操作和管理。
在MySQL的使用過程中,我們時常會遇到各種問題,其中一個比較常見的問題是報錯1118。
接下來,我們將講解MySQL報1118錯誤的原因和解決方法。
1118錯誤通常會在創(chuàng)建表的時候出現(xiàn),
錯誤提示為
“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”。
這個錯誤的意思是,在創(chuàng)建表時,某些列的長度相加超過了MySQL所允許的最大行長度65535。在計算行長度時,除去BLOB類型的列的長度,還要加上行存儲的開銷。
出現(xiàn)這個錯誤的原因是我們創(chuàng)建的表結(jié)構(gòu)中包含了太多的長文本類型(如VARCHAR、TEXT),而沒有足夠的空間來存放其它列。
對于VARCHAR類型的列,MySQL需要為其分配額外的空間,以適應其變化的字符串長度。所以,當我們在表中使用大量VARCHAR類型的長文本時,會導致出現(xiàn)1118錯誤。
解決這個問題
我們可以采用兩種方法:
一種是使用TEXT或BLOB類型的列替換VARCHAR類型的列。
由于TEXT和BLOB類型的列不需要額外的存儲空間,所以可以避免出現(xiàn)1118錯誤。
但是需要注意的是,這些列不支持索引、排序、或者通配符查詢。
/** *創(chuàng)建表的時候,大概有170+的字段大部分的字段varchar(255)的長度, 之前是以為字段名太長的文字,然后到網(wǎng)上查找把varchar替換成text類型,也沒有嘗試, 我直接刪除一般的字段,表創(chuàng)建成功, 因為MYSQL所允許的最大長度為65535這個只是虛擬的長度但是實際長度完全沒有這么長, 我估計也只有5萬多長度 因為字段都很重要,所以我把所有的255長度全部更改成100長度最終創(chuàng)建表成功?。?! */
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
mysql查詢過去24小時內(nèi)每小時數(shù)據(jù)量的方法(精確到分鐘)
我們經(jīng)常遇到類似這樣的需求,查詢最近N秒、N分鐘、N小時的數(shù)據(jù)及N天的數(shù)據(jù),下面這篇文章主要給大家介紹了關于mysql查詢過去24小時內(nèi)每小時數(shù)據(jù)量(精確到分鐘)的相關資料,需要的朋友可以參考下2023-03-03SQL中l(wèi)imit函數(shù)語法與用法(MYSQL獲取限制某行數(shù)據(jù))
limit是MySql的內(nèi)置函數(shù),一般用于查詢表中記錄的條數(shù),作用是用于限制查詢條數(shù),下面這篇文章主要給大家介紹了關于SQL中l(wèi)imit函數(shù)語法與用法的相關資料,詳細講了MYSQL獲取限制某行數(shù)據(jù)的方法,需要的朋友可以參考下2022-08-08MySQL優(yōu)化之表結(jié)構(gòu)優(yōu)化的5大建議(數(shù)據(jù)類型選擇講的很好)
很多人都將 數(shù)據(jù)庫設計范式 作為數(shù)據(jù)庫表結(jié)構(gòu)設計“圣經(jīng)”,認為只要按照這個范式需求設計,就能讓設計出來的表結(jié)構(gòu)足夠優(yōu)化,既能保證性能優(yōu)異同時還能滿足擴展性要求2014-03-03