MySQLで異なる文字コードを持ったデータベースを運用する方法
MySQLをrpmでインストールした状態で、utf8のデータベースとujisで運用していたXoopsを並列で稼動するために取った方法を説明します。
[環境]
MySQLをrpmでインストール => latin1
データベース1 -> utf8
データベース2 -> ujis
*データベース2 = xoops
[問題]
my.cnfでdefault-character-setを設定してしまうと、全データベースに影響を及ぼす。
具体的には、MySQLの文字コード変換により片方は文字が化けてしまう。
[対応]
xoops側で接続時に文字コードを設定するようにした。
vi xoops/class/database/mysqldatabase.php --- function connect($selectdb = true) { if (XOOPS_DB_PCONNECT == 1) { $this->conn = @mysql_pconnect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS); } else { $this->conn = @mysql_connect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS); } if (!$this->conn) { $this->logger->addQuery('', $this->error(), $this->errno()); return false; } if($selectdb != false){ if (!mysql_select_db(XOOPS_DB_NAME)) { $this->logger->addQuery('', $this->error(), $this->errno()); return false; } } + /* add */ + $sql = "SET NAMES 'ujis'"; + mysql_query($sql, $this->conn); return true; } ---