EclipseのDBプラグインを作成しているときに気づいたのだが、MySQLでトランザクション管理ができない。
少し調べたところ、原因は、MySQL 3.23は、デフォルトで、トランザクション管理ができないということだった。
ちなみに、create文を発行して、デフォルトで作成されるテーブルは、MyISAMという種類になる。
また、トランザクション管理が可能なテーブルは、InnoDBとなる。
MyISAMとなっているテーブルをInnoDBに変更するには以下のSQLを発行するのみで可能である。
alter table "テーブル名" type=InnoDB;
トランザクション管理を行うためには、./configure --with-innodbを行ってから、コンパイルインストールを行わなければならないらしいので、、DBの実験を行うために、MySQLのバージョンアップを行うことにした。srpmからリビルドを試みたが、ライブラリの依存問題か足りないのかで、途中で止まってしまった。
そこで、情報収集めのためMySQLの本家サイトをみていたところ、PPCのバイナリが標準で配布していた。バイナリがあるのであれば、メジャーバージョン自体の乗り換えてしまいこととし、トランザクション管理を行うには、MAXバイナリが必要なので、
mysql-max-4.1.5-gamma-unknown-linux-powerpc.tar.gz
をダウンロードし、インストールした。
試しに、旧バージョンのMySQLのデータディレクトリをさした状態で、新バージョンのMySQLを起動したところ普通にデータベースにアクセスできた。どうやら互換性があるらしい。
しかし、mysqlコマンドからアクセスしようとすると、普通にインストールしたところ、sockファイルが見つからないと怒られた。
ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)これは、Vineのバイナリでデフォルト指定されている場所に、sockファイルがないからということらしい。 sockファイルは、Unixで通信するために必要な設定が書かれたファイル?らしい。
解決方法は、起動時にsockファイルの作成場所を指定するため、/etc/my.cnfファイルを作成し、[mysqld]カテゴリに以下のように定義した。
[mysqld]
socket=/var/lib/mysql/mysql.sock
一応、DBが使えるとしても気持ちが悪いので、DB自体を再構築した。
まず旧バージョンのMySQLを起動し、DBのダンプ。
mysqldump "データベース名" > "ダンプファイル名"
新バージョンMySQLに切り替えてから、ダンプファイルを使用してデータベース再構築。
mysql -u "ユーザ名" -p "データベース名" < "ダンプファイル名"
正常に再構築ができたように見えたのだが、MySQL上で運用している本Blogだと正常で、作成中のEclipseプラグインからだと日本語コードが文字化けしてしまった。
またまた、原因を調査したところ、MySQL4系だと、設定ファイルから指定なしに作成されたテーブルの標準文字コードなどを設定できるらしい。
現状の設定の確認方法は、mysqlコマンドでMySQLにログインし、以下のコマンドを実行する。
mysql> show variables like 'character\_set\_%';
表示される設定を変更することで、クライアント側から接続したときに文字化けを解消できるらしい。
MovableTypeの文字コードは、UTF-8。
EclipseもUTF-8なので、MySQLのデフォルトの文字コードをすべて、UTF-8とする。
設定方法は、/etc/my.cnfの[mysqld]カテゴリに以下のように指定する。
[mysqld]
default-character-set=utf8
これで、MovableTypeと作成中のEclipseプラグインからも文字化けがおこらずに、文字列が取得可能となった。
また、正常にトランザクション処理もできたので、これで、Eclipseプラグイン開発のテストに使用できることとなった。
mail
コメントする