MySqlの設定
日本語対応としてMySqlのテーブルをutf8で作成するように設定します。
この設定を行わない場合、テーブルから取得した日本語が???などに文字化けしてしまいます。
①my.cnfを編集(文字コードをutf8に設定)
# vi /etc/my.cnf
②mysqldを再起動
# service mysqld restart
③データベースを作成
ログイン
# mysql -u root -p
データベース作成
> create database データベース名;
例) > create database test_db;
データベースへ移動
> use データベース名;
例) > use test_db;
データベースのステータスを表示(文字コードがutf8であることを確認)
> status;
MySqlのテーブルの作成を行った場合、デフォルトはMyISAMエンジンを使用する設定となっています。
MyISAMエンジンは、パフォーマンスが高いらしいのですが、トランザクションが使用できないようです。
そこで、ここでは、テーブルのエンジンをトランザクション制御が行えるInnoDBエンジンに変更する方法について書きます。
ログイン
# mysql -u root -p
データベース作成
> create database データベース名;
データベースへ移動
> use データベース名;
テーブル作成
> create table テーブル名(カラム名 型 その他プロパティ,...);
例) > create table test(col1 varchar(10) primary key not null, col2 varchar(20));
データベースエンジンの設定および説明の表示
> show engines;
テーブルのエンジンの表示(EngineがMyISAMであることを確認)
> show table status;
テーブルのエンジンを変更
> alter table テーブル名 engine = InnoDB;
例) > alter table test engine = InnoDB;
テーブルのエンジンの表示(EngineがInnoDBに変更されたことを確認)
> show table status;
トランザクションが有効になっていることを確認
トランザクションの開始
> start transaction;
行レベルの更新・登録・削除処理を実行
> insert into テーブル名 values(カラムの値1,カラムの値2,...);
例) > insert into test values('test','test');
追加された行を参照
> select * from テーブル名;
例) > select * from test;
ロールバック(warningが出力されないことを確認)
> rollback;
※MyISAMの場合、ロールバック時に以下の警告が出力されロールバックが正常に行われない
warning code:1196 | message:Some non-transactional changed tables couldn't be rolled back
変更がロールバックされていることを確認
> select * from テーブル名;
MySqlを終了
> exit;
mysqldを再起動
# service mysqld restart
最終更新:2012年06月26日 01:03