轉換discuz X2.5表引擎為InnoDB
阿新 • • 發佈:2019-02-07
幾乎所有PHP MySQL的開源產品中資料庫都是採用MyISAM儲存引擎,即使和交易相關的也不例
外,這應該是從查詢效能以及安裝環境考慮的。InnoDB是為處理巨大資料量時的最大效能設計,在資料量少併發小的情況下MySAM優於INNODB,但
是大資料量以及高併發寫入等會導致MySIAM力不從心。InnoDB有很多良好的特點,比如事務支援、儲存
過程、檢視、行級鎖定等,在併發很多的情況下,InnoDB的表現會比MyISAM優越,所以有時會將一些產品的資料庫儲存引擎修改為InnoDB,修改
起來其實比較簡單,只需要執行:ALTER TABLE `表名` ENGINE = InnoDB;即可,但是在discuz
X2.5中表pre_forum_post在轉換時會報錯,提示#1075 - Incorrect table
definition; there can be only one auto column and it must be
defined as a key,大意是自增欄位必須定義成主鍵,查看了一下
執行ALTER TABLE pre_forum_post DROP PRIMARY KEY ,ADD PRIMARY KEY ( position, tid ) ;
然後再執行ALTER TABLE `pre_forum_post` ENGINE = InnoDB
這樣就沒有錯誤了,是不是很簡單呢。