MySQL Archive
【Perl】DBIx::Simple で副問い合わせや JOIN を使う
DBIx::Simple + SQL::Abstract を使うと簡単な SQL だと記述が簡潔にすむのだが、副問い合わせや JOIN を使い出すと途端に複雑になる。こういう場合は素直に素の SQL を書いた方がいいのだが、無理矢理にでも書くときはどうなるかやってみる。
WHERE 句にリテラル SQL を書く
文字列ではなく、文字列リファレンスを使う。例えば誕生日の「日」より「月」の方が数値として大きい(五月四日とか一〇月三日とか)人のリストを得たいとする。
SELECT id, name FROM directory WHERE MONTH(birthday) > DAY(birthday)
これを DBIx::Simple で表すとこうなる。
my $ds = DBIx::Simple->new($dbh);
my $rs = $sa->select('directory',
['id', 'name'],
{ 'MONTH(birthday)' => { '>' => \'DAY(birthday)' } },
# { 'MONTH(birthday)' => \'> DAY(birthday)' },
);
- Comments: 0
- TrackBacks: 0
【Perl】DBIx::Simple ノススメ
はじめに
Perl において DB に接続し、SQL を扱うモジュールはもちろん DBI モジュールな訳だが、これを格段に使いやすくしてくれる DBIx::Simple モジュールというのがある。
use DBIx::Simple; - 今日のCPANモジュール(跡地)
http://e8y.net/mag/009-dbix-simple/
このサイトのまとめが非常に分かり易い。例を挙げるとこんな感じ。
- Comments: 0
- TrackBacks: 0
【Movable Type】5.0 → 5.02 へのアップグレード
- 2010年8月 2日 12:01
- Movable Type | MySQL | perl
- Tweet

今まで面倒で放置していたのだが、Movable Type を 5.0 から 5.02 にアップグレードしてみた。
Movable Type 5.0 から 5.0x へのアップグレード
http://www.movabletype.jp/documentation/mt5/upgrade/mt5.html
- Comments: 0
- TrackBacks: 0
【MovableType, MySQL】記事中に BMP 外の文字を使う
- 2010年7月19日 09:50
- Movable Type | MySQL
- Tweet

Movable Type では最新の文字セットが使えない?
を書いていて気づいたのだが、Movable Type では記事中に BMP(基本多言語面)外の文字が使えない。といってもこれは MT 自体の責任ではなく、MySQL の現行リリース 5.1 では BMP 外の文字をサポートしないためだ。
The
ucs2andutf8character sets do not support supplementary characters that lie outside the BMP.
ucs2とutf8というキャラクターセットは BMP 外にある追補された文字をサポートしません。
現在開発中の MySQL 5.5 ではこれが改善されて、BMP 外の文字を扱えるキャラクターセット utf8mb4、utf16、utf32 が追加された。
漢(オトコ)のコンピュータ道: MySQLコミュニティ騒然!MySQL 5.5.4が与えるインパクト。
http://nippondanji.blogspot.com/2010/04/mysqlmysql-554.html
- Comments: 0
- TrackBacks: 0
【MovableType, MySQL】MySQL 5.1 → 5.5 へのアップグレード
- 2010年7月17日 20:18
- Movable Type | MySQL
- Tweet

故あって Movable Type で使っている MySQL のバージョンを 5.1 → 5.5 にアップグレードしてみた。
MySQL 5.5 のダウンロード
MySQL :: Download MySQL Community Server
http://dev.mysql.com/downloads/mysql/5.5.html
上記サイトより該当するプラットフォームのものをダウンロードする。今回はミラーサイトから直接ダウンロードした。
$ wget ftp://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.5/mysql-5.5.3-m3-osx10.6-x86_64.dmg
- Comments: 0
- TrackBacks: 0
MySQLにユーザーを登録する
新しくインストールするたびに調べてるので、覚え書きとしておいておく。
ユーザ権限の設定 | MySQL講座 [Smart]
http://www.rfs.jp/server/mysql/02/02.html
インストール直後は
$ /usr/bin/mysqladmin -u root password 'new-password'
とやって、rootにパスワードを設定する。更に、localhost以外のホストからもアクセス可能にする(ハイライトしている部分が入力すべきコマンド)。
$ mysql -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6 Server version: 5.0.77 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'パスワード' WITH GRANT OPTION; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges;
後は、MySQL AdministratorでGUIを使って一般ユーザーを作れば楽ちん。
MySQL :: MySQL GUI Tools Bundle: Archived Downloads
http://dev.mysql.com/downloads/gui-tools/5.0.html
- Comments: 0
- TrackBacks: 0
DBIx::Classのクエリで関数を使う
UPDATE users SET password = MD5('mypass') WHERE id = 15;
idが15であるユーザーのパスワードに'mypass'をMD5で符号化して保存する。
みたいなSQL文をDBIx::Class(というか、SQL::Abstract)で表現するにはどうするか。この場合はこう書く。
$schema->resultset( "Users" )
->update( {
password => \"MD5('mypass')",
id => 15,
} );
なんてことはない。文字列のリファレンスを値として与えるだけだ。更に応用として次のようなSQLだと、
SELECT CONCAT( 'ID', LPAD( id, 6, '0' ) ) AS member_id FROM users;
usersテーブルからidを取り出し、頭に'ID'を付けて6桁0埋めで取り出す。(id = 15なら'ID000015'となる)
こうなる。
my $it = $schema->resultset( "Users" )
->search( undef, {
"+select" => [ \"CONCAT( 'ID', LPAD( id, 6, '0' ) )" ],
"+as" => [ "member_id" ],
} );
say $it->first->get_column( "member_id" );
# 「ID000015」などと表示される
- Comments: 0
- TrackBacks: 0
- Feeds
- CC Licence
-
このブログはクリエイティブ・コモンズでライセンスされています。
- W3C Validation

