0017

SQLの最後に付けておくとよさそうな文字コード関連のコード

SQLの最後に付けておくとよさそうな文字コード関連のコード

2011.4.22

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;

2011/9/19追記

MySQLの環境によっては、使用するMySQLのストレージエンジンのデフォルト設定がInnoDBになっている場合があるそうです。(とりあえず、MAMP1.9.6.1(PHP5.2.17を選択)の状態では、InnoDBになっていました。)うまくいかない場合は、最後の行を以下のように変更してみてください。

ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;