[心得]phpBB3,phpBB2使用MySQL3升級至MySQL5並由latin1轉utf8

phpBB Installation & Usage Support
phpBB 3 安裝於各類型作業平台之問題討論;外掛問題,請到相關版面依發問格式發表!
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

版面規則
本區是討論關於 phpBB 3.0.X 架設安裝上的問題,只要有安裝任何外掛,請到外掛討論相關版面按照公告格式發表。
(發表文章請按照公告格式發表,違者砍文)
主題已鎖定
CRLin
星球公民
星球公民
文章: 147
註冊時間: 2002-11-13 08:36
聯繫:

[心得]phpBB3,phpBB2使用MySQL3升級至MySQL5並由latin1轉utf8

文章 CRLin »

因為由phpBB3.0.5升級至phpBB3.0.6出問題,奮鬥三天的心得.
測試的OS:Linux,Windows
先於您的電腦(簡稱本機)Windows建立如同您在Linux Server的WAMP環境.
由於網路管理者將MySQL3升級至MySQL5,並未處理phpBB3使用的資料表, 底下說明.
先參考 http://www.phpbb.com/kb/article/doesnt- ... ue-errors/
phpBB3的處理(有得改!), phpBB2的處理請看下文.
以網路phpMyAdmin備份phpBB3使用的資料表,再以本機phpMyAdmin還原.
執行DOS命令,進入 MySQL\bin 資料夾.

代碼: 選擇全部

mysqldump -uroot -p --add-drop-table --default-character-set=latin1 --skip-set-charset db_name >  db_name.sql
透過文字編輯器將db_name.sql檔案中所有的

代碼: 選擇全部

ENGINE=MyISAM
改為

代碼: 選擇全部

ENGINE=InnoDB
(以上這一段可能不用改)

代碼: 選擇全部

DEFAULT CHARSET=latin1
改為

代碼: 選擇全部

DEFAULT CHARSET=utf8 COLLATE=utf8_bin
全部的資料表結構可能須修改, MySQL3資料表的blob及mediumblob有得改,可以先安裝一個測試用的phpBB3再dump出來作比對.例如

代碼: 選擇全部

CREATE TABLE `phpbb_bbcodes` (
  `bbcode_id` tinyint(3) NOT NULL default '0',
  `bbcode_tag` varchar(16) character set latin1 collate latin1_bin NOT NULL default '',
  `bbcode_helpline` blob NOT NULL,
  `display_on_posting` tinyint(1) unsigned NOT NULL default '0',
  `bbcode_match` blob NOT NULL,
  `bbcode_tpl` mediumblob NOT NULL,
  `first_pass_match` mediumblob NOT NULL,
  `first_pass_replace` mediumblob NOT NULL,
  `second_pass_match` mediumblob NOT NULL,
  `second_pass_replace` mediumblob NOT NULL,
  PRIMARY KEY  (`bbcode_id`),
  KEY `display_on_post` (`display_on_posting`)
改為

代碼: 選擇全部

CREATE TABLE `phpbb_bbcodes` (
  `bbcode_id` tinyint(3) NOT NULL default '0',
  `bbcode_tag` varchar(16) collate utf8_bin NOT NULL default '',
  `bbcode_helpline` varchar(255) collate utf8_bin NOT NULL default '',
  `display_on_posting` tinyint(1) unsigned NOT NULL default '0',
  `bbcode_match` text collate utf8_bin NOT NULL,
  `bbcode_tpl` mediumtext collate utf8_bin NOT NULL,
  `first_pass_match` mediumtext collate utf8_bin NOT NULL,
  `first_pass_replace` mediumtext collate utf8_bin NOT NULL,
  `second_pass_match` mediumtext collate utf8_bin NOT NULL,
  `second_pass_replace` mediumtext collate utf8_bin NOT NULL,

最開始的地方加上這行:

代碼: 選擇全部

set names utf8;
將檔案塞回資料庫(DOS命令)

代碼: 選擇全部

mysql --user=root --password=password --default-character-set=utf8 db_name < db_name.sql
以本機phpMyAdmin備份phpBB3使用的資料表,再以網路phpMyAdmin還原.
===================================
phpBB2的處理:
以網路phpMyAdmin備份phpBB2使用的資料表,再以本機phpMyAdmin還原.
執行DOS命令,進入 MySQL\bin 資料夾.

代碼: 選擇全部

mysqldump -uroot -p --add-drop-table --default-character-set=latin1 --skip-set-charset db_name >  db_name.sql
透過文字編輯器將db_name.sql檔案中所有的

代碼: 選擇全部

ENGINE=MyISAM
改為

代碼: 選擇全部

ENGINE=InnoDB
(以上這一段可能不用改)

代碼: 選擇全部

DEFAULT CHARSET=latin1
改為

代碼: 選擇全部

DEFAULT CHARSET=utf8 COLLATE=utf8_bin
最開始的地方加上這行:

代碼: 選擇全部

set names utf8;
將檔案塞回資料庫(DOS命令)

代碼: 選擇全部

mysql --user=root --password=password --default-character-set=utf8 db_name < db_name.sql
打開includes\db.php,第60行以後加入

代碼: 選擇全部

mysql_query("set names 'utf8'");
(網路server的db.php也要改)
以本機phpMyAdmin備份phpBB3使用的資料表,再以網路phpMyAdmin還原.

參考資料:
http://twpug.net/modules/newbb/viewtopi ... 8&forum=33
http://www.jaceju.net/blog/?p=116#more-116
http://www.dchome.net/xspace/html/3/3-116.html
CRLin的簽名檔:
My phpBB3 - http://web.dhjh.tc.edu.tw/~gzqbyr/phpBB
My FluxBB - http://web.dhjh.tc.edu.tw/~gzqbyr/fluxbb (快速、輕巧、方便使用的論壇程式)
主題已鎖定

回到「[3.0.x] 安裝與使用」