Perl - CPAN - DBD::mysqlパッケージ
ここに掲載するものは、塚本さんにパッケージ化して頂いているZaurus用Perl 5.6.1に追加でインストールするPerlライブラリのDBD::mysqlである。
ソースはここからダウンロードし、dev-img-1.3でセルフコンパイルした。
download:lib-perl-dbd-mysql_3.0002-1_arm.ipk
このパッケージとDBIパッケージ、MySQL 3.23.49をZaurusにインストールすれば、Perlによってデータベースにアクセスすることが可能になる。
現時点の最新DBD::mysqlは4.006だが、最近のものはテストが正常に動作しないため、動作するバージョンで一番新しいものを採用した。
ただし、/usr/lib/libmysqlclient.soが/usr/sbin/mysqldとの通信に使用するソケットを/var/run/mysqld/mysqld.sockに固定しているため、以下のようにここの設定を変更する必要がある。
- /etc/mysql/my.cnfを以下のように変更。
[client] socket = /tmp/mysql.sock ↓ socket = /var/run/mysqld/mysqld.sock [mysqld] socket = /tmp/mysql.sock ↓ socket = /var/run/mysqld/mysqld.sock
- /etc/rc.d/init.d/mysqlを以下のように変更。
pid_file=/var/lib/mysql/mysqld.pid ↓ # 上記行の下に追加した内容(/usr/bin/safe_mysqldからのコピー)を変更 socket=/var/run/mysqld/mysqld.sock if [ -r /etc/mysql/my.cnf ]; then tmp=`grep '^pid-file' /etc/mysql/my.cnf | sed 's/.*=[\t ]*//'` if [ -n "$tmp" ]; then pid_file=$tmp fi tmp=`grep '^socket' /etc/mysql/my.cnf | sed 's/.*=[\t ]*//'` tmp=`echo $tmp | sed 's/ .*//'` if [ -n "$tmp" ]; then socket=$tmp fi fi sockdir=`dirname $socket` # Start daemon ↓ # 上記行の下に追加(/var/run→/dev/shmがRAMディスクで揮発するため) mkdir -p $sockdir chmod 777 $sockdir chown daemon:daemon $sockdir
また、このパッケージをビルドするときに必要なmysql_configコマンドやヘッダファイルがMySQL 3.23.49には付属していないため、MySQL 3.23.58のソースからヘッダファイルを取り出し、ダミーのmysql_configコマンドを作成した。
download:mysql-conf-hdr_0.1-1_arm.ipk
手始めの使い方は以下の通りである。
# "ID<TAB>名前<TAB>年齢"のテキストをデータベースに登録 use DBI; $dbh = DBI->connect("dbi:mysql:dbname=test"); $tbl_name = "test2"; $create_tbl =<<__CREATE_TBL__; create table $tbl_name ( id int, name varchar(40), age int ) __CREATE_TBL__ @tables = $dbh->tables; $exist = 0; foreach $name (@tables) { if ($name =~ /$tbl_name/) { $exist = 1; last; } } if (!$exist) { $dbh->do($create_tbl) or die; } while (<>) { chomp; ($id, $name, $age) = split(/\t/); $id = int($id); $name = substr($name, 0, 40); $age = int($age); $insert = "insert into $tbl_name values ($id, '$name', $age)"; $dbh->do($insert) or die; } END { $dbh->disconnect if $dbh; }
DBD::mysqlの詳細は以下をご覧頂きたい。
英語:http://search.cpan.org/~capttofu/DBD-mysql-3.0002/lib/DBD/mysql.pm
日本語:http://perldoc.jp/docs/modules/DBD-mysql-2.1026/DBD/mysql.pod