MySQL多個大文字域異常

2021-09-01 22:30:24 字數 1486 閱讀 1015

[b][color=green][size=large]最近散仙在處理標註結果入庫的結果資料時,發現再向mysql插入text域的文字值,莫名其妙的總是報乙個異常,資訊如下:[/size][/color][/b]

[b][color=olive][size=large]後經,查資料發現,原來跟mysql的內部儲存引擎有關係,散仙的資料庫預設用的innodb的引擎,對text型別的文字域支援有限,不能超過15個text型別的,每條資料不能超過8000位元組,散仙要存的有20多個字段,發現果然裡面有超過15個的text型別,沒辦法了,這10多個text型別的資料是必須的,換成varchar可能會超出varchar的上限,所以最後散仙只好在動態建表時,指定mysql的引擎為myisam,部分**如下:[/size][/color][/b]

[b][color=olive][size=large]至此,解決上面的異常問題,下面我們來詳細的看下這兩種儲存引擎的具體區別:[/size][/color][/b]

[b][size=large]myisam是mysql的預設儲存引擎,基於傳統的isam型別,支援全文搜尋,但不是事務安全的,而且不支援外來鍵。每張myisam表存放在三個檔案中:frm 檔案存放**定義;資料檔案是myd (mydata);索引檔案是myi (myindex)。

innodb是事務型引擎,支援回滾、崩潰恢復能力、多版本併發控制、acid事務,支援行級鎖定(innodb表的行鎖不是絕對的,如果在執行乙個sql語句時mysql不能確定要掃瞄的範圍,innodb表同樣會鎖全表,如like操作時的sql語句),以及提供與oracle型別一致的不加鎖讀取方式。innodb儲存它的表和索引在乙個表空間中,表空間可以包含數個檔案。

主要區別:

myisam是非事務安全型的,而innodb是事務安全型的。

myisam鎖的粒度是表級,而innodb支援行級鎖定。

myisam支援全文型別索引,而innodb不支援全文索引。

myisam相對簡單,所以在效率上要優於innodb,小型應用可以考慮使用myisam。

myisam表是儲存成檔案的形式,在跨平台的資料轉移中使用myisam儲存會省去不少的麻煩。

innodb錶比myisam表更安全,可以在保證資料不會丟失的情況下,切換非事務表到事務表(alter table tablename type=innodb)。

應用場景:

myisam管理非事務表。它提供高速儲存和檢索,以及全文搜尋能力。如果應用中需要執行大量的select查詢,那麼myisam是更好的選擇。

innodb用於事務處理應用程式,具有眾多特性,包括acid事務支援。如果應用中需要執行大量的insert或update操作,則應該使用innodb,這樣可以提高多使用者併發操作的效能。[/size][/b]

[b][color=olive][size=large]修改表的儲存引擎的ddl sql語句[/size][/color][/b]

alter table tablename type=innodb

sass多個顏色文字

沒什麼技術含量,完全就當日記寫 場景 遇到乙個列表,裡面花花綠綠的,有很多種顏色,就用span來包,但是顏色呢,我又不想乙個乙個寫color,正好顏色要求不高,就用標準的red green這種來寫,所以就起了redspan greenspan這樣的類名,這樣一看,如果不用sass寫的好看點真的過不去...

mysql 多個等於 順序 MySQL選擇多個順序

所以我得到了這張桌子 id when off other.stuff 1 2012 09 17 17 00 00 0 anything1 2 2012 09 17 18 00 00 0 anything2 3 2012 08 31 21 00 00 1 blabla321 4 2012 08 31 ...

mysql 函式多個連線 mysql 多個字段拼接

mysql的查詢結果行欄位拼接,可以用下面兩個函式實現 1.concat函式 mysql select concat 1 2 3 from test concat 1 2 3 123 如果連線串中存在null,則返回結果為null mysql select concat 1 2 null,3 fro...