MySQLの復習
インターネットでCakePHPの記事を読んでいたら、MySQL + PHPの記事が目に入った。私は、ずっと PostgreSQLを使っているので、MySQL はほとんど使ったことがない。
以前、ちょっと使ってみた時期もあるのだが、最近はさっぱりなので、復習してみようという気になった。
ということで、いつもの Ubuntu Desktop に設定してみることに。以前、CentOS の版を使ったので、それとはまた違うことがあるかも。
まず、パッケージマネージャを使って、インストール実施。
それで、使ってみたのだが、日本語がまったくダメ。
今の環境で、PostgreSQL は、最初から日本語だったので、かなり意外。
ということで、インターネットで日本語に設定するやりかたを調べる。
2、3のサイトをチェックしたところ、設定ファイルの変更が必要とわかった。
設定ファイルはこれ:/etc/mysql/my.cnf
このファイルの [client]セクション、[mysqld]セクション、[mysql」セクションにそれぞれ、こんなのを追加する
[client]
default-character-set = utf8
[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
[mysql]
default-character-set = utf8
修正したら、/etc/init.d/mysql restart でデーモンを再起動する。
これで、テーブル名や要素名に日本語が扱えるようになる。
DBの準備ができたので、早速、PostgreSQL と同じテーブルをつくり、CakePHP で表示してみる。
ついで、バージョンアップとか、MySQL 用に違う作業フォルダを準備したりとか行う。
CakePHPの新しい作業フォルダの準備はこんな感じ。
・ cake をワークフォルダにコピー
・ app をワークフォルダにコピーし、フォルダ名を変更
とりあえず、work2 としておく。
・~/work2 の config の下にある database.php をMySQL にあわせて修正。
・~/work2 の webroot にある index.php を修正。
39行目 define('ROOT','(実際のフォルダ名)');
46行目 define('APP_DIR','(実際のフォルダ名)');
53行目 define('CAKE_CORE_INCLUDE_PATH','(実際のフォルダ名)' );
・キャッシュ用のフォルダの書き込み権を設定
~/work2/tmp/ の下を階層全体に書き込み権を出す
chmod -R 777 tmp
・CSSを前に用意したファイルに置き換え
~/work2/webroot/css
これで、以前作った postgresql 用のCakePHP環境を一式コピーする。
予定どおり、DBから取り出したデータへの参照が変わっているのを確認。
SQL を書いて、query() でDBからデータを取り出した場合
Postgresql: db_data[0][0]['要素名']
MySQL: db_data[0]['テーブル名']['要素名']
この場合、Postgresql のPHPコードをそのまま、MySQLで使ってもエラーになるので注意。