
MySQLでよく文字コード絡みで悩まされるので、SQL使用時にコードを設定する方法がないものかと探していましたが、これはよさげというものを本で見付けましたので、メモしておきます。
例えば、CakePHPで認証コンポーネントを使うために、以下のようなテーブルを作るとします。
CREATE TABLE `Mydata` . `users`( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `username` VARCHAR(50), `password` VARCHAR(50), `created` DATETIME DEFAULT NULL , `modified` DATETIME DEFAULT NULL ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
重要なのは、最後行にあるこのコードです。DBの種類と文字コードを指定しています。今時utf8以外を使うことはめったにないので、個人的にはコピペで十分かなぁと思っています。
ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
MySQLの環境によっては、使用するMySQLのストレージエンジンのデフォルト設定がInnoDBになっている場合があるそうです。(とりあえず、MAMP1.9.6.1(PHP5.2.17を選択)の状態では、InnoDBになっていました。)うまくいかない場合は、最後の行を以下のように変更してみてください。
ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
SPONSORED LINK