首頁 > 軟體

MySql中的longtext欄位的返回問題及解決

2022-07-05 18:06:38

MySql中longtext欄位的返回

最近開發中用到了longtext這種欄位。在mysql中該欄位的最大長度為4G

如下圖所示

開發中遇到的一個問題就是。例如有個article表,然後我們的頁面要將資料以列表的形式展示到前端(只顯示幾個欄位,如作者,標題等等,例如放到table中顯示多條記錄),但是是將該表中的所有資訊都查出來,然後當用戶點選某條記錄的時候,會跳到詳情頁,在顯示出詳細的資訊。

這樣當資料量比較多的時候,或者文字的內容比較大的時候,就出現問題了。

開啟頁面,頁面就會一直載入,資料量越大,載入時間就越長,然後才會顯示資料列表。這會嚴重影響使用效果。

解決方法

當然是sql語句的問題了,當像上面這樣查詢整個列表的時候,可以不查詢longtext這個欄位,將其他的欄位查詢出來。然後當用戶點選某條資料時,再根據該條資料的id到資料庫去單查這條資料,這時再將longtext給查出來即可。

說到這裡,還要說一種情況,就是有時候從資料庫中查到的資料封裝到實體類中,怎麼也取不到某個欄位的值,就是null。這個時候要看看sql語句,返回的結果集中是否將該欄位封裝並且對映到該類對應的欄位上。

一般情況下都是結果集中沒有封裝該欄位的原因。

Mysql中Text欄位的範圍

text:儲存可變長度的非Unicode資料,最大長度為2^31-1個字元。

text列不能有預設值,儲存或檢索過程中,不存在大小寫轉換,後面如果指定長度,不會報錯誤,但是這個長度是不起作用的,意思就是你插入資料的時候,超過你指定的長度還是可以正常插入。

mysql中text 最大長度為65,535(2的16次方–1)字元的TEXT列。

如果你覺得text長度不夠,可以選擇

  • MEDIUMTEXT最大長度為16,777,215。
  • LONGTEXT最大長度為4,294,967,295
  • Text主要是用來存放非二進位制的文字,如論壇貼文,題目,或者百度知道的問題和回答之類。

需要弄清楚的是text 和 char varchar blob這幾種型別的區別。

mysql 修改 text欄位長度_mysql的text欄位長度?mysql資料庫中text欄位長度不夠的問題…

型別是可變長度的字串,最多65535個字元;

可以把欄位型別改成MEDIUMTEXT(最多存放16777215個字元)或者LONGTEXT(最多存放4294967295個字元).

MySQL supports 4 TEXT field types (TINYTEXT, TEXT, MEDIUMTEXT and LONGTEXT) and this post looks at the maximum length of each of these field types.

MyISAM tables in MySQL have a maximum size of a row of 65,535 bytes, so all the data in a row must fit within that limit. However, the TEXT types are stored outside the table itself and only contribute 9 to 12 bytes towards that limit. (For more information about this refer to the MySQL Manual - Data Storage Requirements chapter). TEXT data types are also able to store much more data than VARCHAR and CHAR text types so TEXT types are what you need to use when storing web page or similar content in a database. The maximum amount of data that can be stored in each data type is as follows: TINYTEXT256 bytes

TEXT65,535 bytes~64kb

MEDIUMTEXT 16,777,215 bytes~16MB

LONGTEXT4,294,967,295 bytes~4GB

In most circumstances the TEXT type is probably sufficient, but if you are coding a content management system it’s probably best to use the MEDIUMTEXT type for longer pages to ensure there are no issues with data size limits.

漢字在utf8mb4中佔用幾個字元

答:3個

MySQL官方手冊中對於utf8mb4的解釋是

現有資料庫版本預設的utf8都為utf8mb3,注意其中所說的"相同的長度"。

所以在utf8mb4下,英文佔用1個位元組,一般漢字佔3個位元組,emoji表情佔4個位元組。

關於程式碼插入emoji表情報錯,請檢查 表編碼 和 資料庫連線 編碼是否同時為utf8mb4。

結論:資料庫和表都設定為utf8mb4。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com