innoDBが使えない?

2011/01/13 | MySQL

CentOS5.5の環境でMySQLを使っているとき、phpMyAdminを使ってテーブルをinnoDBにしようと思ったら・・・。あれ、できない、なんで。

たしかinnoDBはMySQL5から使えるようになったから大丈夫なはずなのに。いちおうMySQLのバージョンを確認してみると5.0.77。大丈夫なはずだよね。

とりあえず調べてみた。しかし情報が意外と少ない。そもそもこんなことで誰も悩まないのか、それともみんなあきらめがいいのか。

こちらのブログにひとつの方法が書いてあった。CentOS5.4でMySQL5.1ということでうちとは少し違うけど。my.cnfに2行ほど書き加えて、innoDBを使えるようにするというものだった。どうもその記述方法をみるとinnoDBがプラグインで動作しているような・・・。そんなんだったかなぁ。って調べてみたら5.1からプラグインがどうこうという情報がたくさんある。どうやら自分のところの5.0とは関係の無い話らしい。

しょうがないのでmy.cnfを確認。そして現時点でinnoDBを使えているサーバのmy.cnfも確認。そこに決定的な違いがあった。

skip-innodb

innoDBが使えない方のサーバの設定ファイルにはこんな記述が。なんじゃそりゃ。これは意図的にサーバ会社がこんなふうに設定していたのだろうか。よくわからない。

とりあえず使えている方のサーバには記述がないので、いったんmysqlを停止し、上記の行をコメントアウトしてmysqlを再起動。これで無事innoDBが使えるようになった(ように見えるだけかもしれないけれど)。

よかった。

MySQLを扱うGUIツール

2010/10/27 | MySQL

現在案件の提案中。ほぼ受注できそうな感じなのだが、クライアントのリクエストの一つに「データベース処理に時間がかかるかも」と思われる部分があった。基本的にこういった不確定要素をもったまま受注してしまうのは嫌いなので、なるべく今のうちに処理したい。ということで、SQL文を書いてテストしてみることにした。

しかしテストSQL文を実行させるにあたって、なるべく本番と同等の条件にしたい。そう考えると、データとして100万件程度をINSERTしておかなければならなさそう。さてどうするか。

まずエクセルを使って乱数処理させた。できあがったデータをテキストファイルにし、PHPでSQL文に整形した(最初から全部SQL文にしたほうが早かった)。次にこのSQL文を実行しなくてはならない。

最初はphpMyAdminのインポート機能を使ってみた。しかし実行時間でエラーになる。時間がかかりすぎると他の作業に差し支えそうなので、Windows用のGUIツールを使うことにした。さて何を使おうか。いろいろ考えた結果MySQL Workbenchを使うことにした。コマンドラインからやっても良かったのだけれど、便利ツールはなるべく使いたい(Linuxならあきらめてコマンドラインだけれど)。

まずはソフトウェアをダウンロードしてインストール。

ダウンロードはこちらから

そしてSQLを実行。少々使い方がわからない部分があって悩んだけど、結果としてうまくいった。100万件のデータを登録するのに5分ちょっと位だったと思う。

とっても便利だし、インターフェイスもかっこいい。どうせ使うツールなら、こういうクールなアプリがいい。

MySQL使用時のtimezoneの設定

この前PHPのtimezoneの設定について記述した。この設定は当然PHPスクリプトのみで有効だ。MySQLと連携したシステムを作って、SQL文に日付関連の関数を組み込んだ場合、PHPに処理が渡る前にデータベース操作が終わってしまう。となると、データベース操作で得られる値は、期待したtimezoneでの値とは異なるものになる可能性が高い。そんな時に使うのがこれ。

SET time_zone = ‘+9:00′;

MySQL使用時に「SET NAMES binary;」というおまじないを付ける人も多いと思う。文字化け関連に対応するためにつけるわけだが、やっていることはこれと同じ。「SET」によって環境を設定している。つまりこれにより、一時的にtimezoneに変更を加えることができる。だからPHPからSQL文を発行するときに、毎回このSQL文を一番最初に発行しておいてやれば良さそうだ。

どんな具合に適用されるのかは、しばらく使ってみて確かめることにする。

MySQLのvarchar型の長さについて

2010/01/15 | MySQL

最近気がついた。MySQLのデータ型でvarcharというのがある。varcharを指定した場合、そのカラムに格納することができる文字の長さを指定してやらなければならない。この「長さ」というのは「文字数である」ということに気がついた。

「文字数」とは文字通り「文字の数」。マルチバイトもシングルバイトも関係ない。全角も半角も関係ない。半角アルファベットの「ABCD」や「1234」、全角アルファベットの「ABCD」、平仮名の「あいうえ」、混在した「aAあ1」。これらは全てvarcharでいうところの「長さ4」になる。

文字って奥が深い。

phpMyAdminでVIEW

2010/01/03 | MySQL

MySQLはバージョン5からVIEWを使用できるようになった。最近はデータベースをコマンドラインから扱うことがあまりなく、基本的にphpMyAdminから操作することがほとんどだ。ではphpMyAdminから簡単にVIEWを扱うことが出来るのか。

VIEWの作成は簡単だ。SQLを実行したり、テーブルに対して検索をかけたりしたあとに表示される結果のページに「CREATE VIEW」とあるので、これをクリックするとVIEWが出来上がる。もちろんCREATE VIEWのSQL文を実行することでもVIEWを作ることができる。

しかし現状のphpMyAdminの最新バージョン3.2.4で確認したが、VIEWの内容を、インタラクティブに確認したり修正したりする方法が見つけられない。ウェブで調べたが、そもそもそういう情報を求めている人もあまりいないのか、期待する検索結果が出てこない。結局SQL文を実行するしかないみたい。

VIEWの内容を確認する方法は以下のSQL文。

SHOW CREATE VIEW view_name;

VIEWを修正するためのSQL文(CREATE VIEWの構文をALTER VIEWにするだけ)。

ALTER VIEW view_name AS SELECT … ;

まだまだVIEW機能はこなれていないのだろうか。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net