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

CakePHP
スポンサーリンク

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;“`