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.phpMySQL にあわせて修正。
・~/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]['テーブル名']['要素名']

この場合、PostgresqlPHPコードをそのまま、MySQLで使ってもエラーになるので注意。