Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2009-05-04

concrete5をさくらインターネットにインストールしたときのメモ

現状のconcrete5はDBひとつをまるごと使うが、 普通ならそのまま動く模様。

※追記(2009/05/06): バージョン 5.3.1.1 で下記問題は修正されたようです。

だが、

○データベースの名前にハイフン「-」が入っているとインストールができません

公式FAQより

うちは不幸にもこれに該当してしまう。 さくらインターネットの「さくらのレンタルサーバ スタンダード」では、アカウント名がMySQLのDB名になるのだが、うちのアカウント名はハイフン入りなのだ。

FAQには対策方法がなにやら書いてあるが面倒そうであきらめかけたものの、 要はSQL分のDB名指定のところが「`」で囲んでないだけじゃないのか?

事実確認のためブラウザのセットアップ画面からDB名(ハイフン入り)を入力してセットアップ開始すると、 確かに「-」が原因でエラーになる。 ソースを見ると「concrete/libraries/database.php」の次の部分が問題のところらしい。

concrete/libraries/database.php

>--->---$cd = $this->db->GetRow("show create database {$this->db->database}");
>--->---if (!preg_match('/' . DB_CHARSET . '/i', $cd[1])) {
>--->--->---$this->db->Execute("ALTER DATABASE {$this->db->database} character set " . DB_CHARSET);
>--->---}

次のように {$this->db->database} を「`」で囲んでやる。2箇所修正。

>--->---$cd = $this->db->GetRow("show create database `{$this->db->database}`");
>--->---if (!preg_match('/' . DB_CHARSET . '/i', $cd[1])) {
>--->--->---$this->db->Execute("ALTER DATABASE `{$this->db->database}` character set " . DB_CHARSET);
>--->---}

これでOK。 さくらのレンタルサーバーでも無事動かすことができた。