您在這裡

phpbb2drupal

yjchen's 的頭像
yjchen 在 2007-09-08 (週六) 09:17 發表

phpBB2Drupal 是一款從 2005 年開始的 phpbb2 轉換到 drupal5 上的模組。

由於個人偏好使用了 PostgreSQL 當作 drupal5 的資料庫。手頭上有已經運行一年使用 MySQL5 的 phpbb2 討論區,想試著轉換到 drupal5 上來。所以,找到這一款模組。

所以是:drupal5/postgresql, phpbb2/mysql

在轉換設定上,一旦設定了 phpbb2 資料庫位址不同於 drupal5/postgresql 即會產生:

Fatal error: Cannot redeclare db_status_report() (previously declared in /usr/share/drupal5/includes/database.pgsql.inc:18) in /usr/share/drupal5/includes/database.mysql.inc on line 34

順帶一提,這是 Debain lenny。

Does not work when Drupal uses Postgresql 裡面剛好說到一樣的情形:

If the phpBB installation is MySQL and the Drupal installation is postgresql, there is a failure as soon as one specifies that phpbb is at another db address (with URL). This is a drupal issue, and people are trying to Allow both postgresql and mysql database connections from within the same site.

由於才疏學淺,只好在這放棄。
決定改成用 drupal5/mysql 試試看。到轉換設定,一切順利,直到轉換過程發現亂碼;讓我們看看可能出了什麼問題。

phpbb2 內容呈現採用 utf-8。(Default Charset: utf-8)。drupal5 我想就不用多說了。

轉換過程本想因為兩邊都編碼都一致,所以不用更改編碼;轉換設定編碼轉換沒有勾選。

我把轉換過程出現的亂碼抄下來:您覺得誰適任本伺服器 貼在 vim 上,我打算一個 char 一個 char 原封不動抄上去,所以我設定 encoding=latin1,fileencoding=latin1 存檔。使用瀏覽器開啟此檔。編碼選 utf-8 呈現正常字型:您覺得誰適任本伺服器。所以,我猜原本的儲存編碼是 latin1,所以再一次修改轉換設定裡的編碼轉換設定 phpbb2/ISO-8859-1 轉到 drupal5/utf-8,好樣的,轉換過後一樣亂碼。又再一次體會到自己的無能。

看起來像是兩邊的字元校對不一樣
也就是說,你phpbb的字元校對,和drupal的字元校對市不是一模一樣?
字元校對是一個欄位一個欄位的,一個table一個table...只設定資料庫沒有用

--
from open mind to open source~

--
from open mind to open source~

還沒耶,正在看誰能給我比較明確的解決方案或線索。
jimmy 說的我可以再查查。

搞定。先留操作流程,到時候再補充吧。
操作流程:
mysqldump -u root -p --default-character-set=latin1 --skip-set-charset phpbb2 > phpbb2.mysql

mysql -u root -p -e "DROP DATABASE phpbb2; CREATE DATABASE phpbb2 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;"

mysql -u root -p --default-character-set=utf8 phpbb2 < phpbb2.mysql

現在轉換就不會造成亂碼了。

phpbb2 的管理者有件事情要做;修改用到的 mysql php script:PHPBB2/db/mysql.php 或 PHPBB2/db/mysql4.php
找到
if($this->db_connect_id)
{

在下面增加:
mysql_query("SET NAMES utf8;", $this->db_connect_id);