トレース DBIx::Classで複雑なクエリを行っている場合、実際に発行されているクエリをみる必要がある場合があります。そのような場合は環境変数DBIC_TRACEを設定してスクリプトを実行すると実行されているクエリをみることができます: DBIC_TRACE=1 myscript.pl クエリが多くて一度に追うのが難しい場合はこの出力をファイルに向けることもできます。 DBIC_TRACE=1=/path/to/query.log myscript.pl トランザクション DBIx::Class 0.08100以上をお使いであれば、明示的に何も指定しなくてもDBIx::Class::Storage::TxnScopeGuardを使用することができます。 #!/usr/bin/perl use strict; use MyApp::Schema; my $schema = MyApp::
VERSION-0.05000での記述。http://search.cpan.org/~mstrout/DBIx-Class/ ドキュメントも当初に比べれば増えてきたし、そっち見たほうがよかばい。 まあ以下は簡単なまとめで。一通り使えるくらいは書きたい。 このサイトはWikiなので途中途中に色々追加したり修正したりしますからご注意を DBIx::Class::Schemaを使ってみる これからDBICではSchemaメインらしい。 使うテーブル作成SQL create table user ( id int(10) NOT NULL auto_increment, name varchar(256) NOT NULL, PRIMARY KEY (id) ) ENGINE = InnoDB;
[DBIx::Class] update failed in resultset iteration loop. SQLiteをDBIx::Classから使って、検索のリザルトセットを繰り返し取得してるループの中でそのテーブルに対してupdateを行うと、 DBD::SQLite::st execute failed: database table is locked(1) at dbdimp.c と言われてしまう。 例えばこんなコード。 while ( my $result = $rs->next ) { $result->property("new_property"); $result->update; } 同じ問題に遭遇した人に対して、DBIx::Classの作者のmattさんがこのように説明してるけど、この答えってなんか中途半端な気がする。SQLiteは他のクライアント/サー
Nekokak's core dump:Perl/DBIC:チュートリアル 101号室:DBIx::Classのリレーション:テーブル間の関係を図で説明 PeroDoc和訳:DBIx::Class PeroDoc和訳:DBIx::Class::Manual::DocMap - ドキュメントには何がありますか? 今日のCPANモジュール:use DBIx::Class; 本番のアプリケーションを動かすのはMySQLかPostgreSQLだけど、テストはSQLiteでやりたい。 まずは、SQLiteでテストができる環境をDebian GNU/Linux Lenny上に用意。 % sudo aptitude install libdbix-class-perl sqlite3 libdbd-sqlite3-perl次にNekokak's core dump:Perl/DBICにしたがい練習してみ
DBIx::Class::SchemaとDBIx::Class::Schema::Loader両方を試してみた。 DBIx::Classは、SQL文を書かずにresultset()を使ってゴニョゴニョできるのがすばらしい!! 今回登場するファイルの場所はこんな感じ。 /root | |---Schema.pm # DBIx::Class::Schema |---SchemaLoader.pm # DBIx::Class::Schema::Loader | |---Schema/ | |---Member.pm # DBIx::Class::Schemaのload_classes(); | |---test_SchemaMember.pl #実行してみるファイル *db file = /path/to/hoge.db (DBI:SQLite) テーブル作成用 members.sql DROP
以下がこのデータベースを作成するための際のSQLです。このSQLをUTF8で保存し、mysqlのデータベース作成権限のあるユーザ(管理者など)で実行します。 /* データベースとユーザを作成 */ DROP DATABASE IF EXISTS blog; CREATE DATABASE blog CHARACTER SET utf8; GRANT ALL ON blog.* TO blog_user IDENTIFIED BY 'blog_pass'; /* テーブルを作成 */ use blog; DROP TABLE IF EXISTS blog_site; CREATE TABLE blog_site ( site_id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, url TEXT, description TEXT, dat
作業内容 ルンバみたいな自動で送られてくる棚に商品をバーコードでスキャンして入れるだけ ノルマは1日3000件 拘束時間11時間(勤務時間10時間プラス休憩1時間) 時給1050円 なんj民にオススメ
NAME DBIx::Class::Schema::Loader - Create a DBIx::Class::Schema based on a database SYNOPSIS ### use this module to generate a set of class files # in a script use DBIx::Class::Schema::Loader qw/ make_schema_at /; make_schema_at( 'My::Schema', { debug => 1, dump_directory => './lib', }, [ 'dbi:Pg:dbname="foo"', 'myuser', 'mypassword', { loader_class => 'MyLoader' } # optionally ], ); # from the co
既存 DB から以下のワンライナー一発で DBIx::Class の Schema が生成できる $ perl -MDBIx::Class::Schema::Loader=make_schema_at,dump_to_dir:./lib -e 'make_schema_at "Hoge::Schema", {relationships => 1, debug => 1}, ["dbi:mysql:hoge","user","password"]' やりかた。 まず、クラスを作りたいディレクトリ付近に移動 さっきのコマンドの dump_to_dir: の箇所にクラスツリーの起点となるディレクトリを指定 make_schema_at の第一引数に生成する Schema のパッケージ名を指定 外部キー制約とかを考慮して has_many とか belongs_to とかを自動で設定して欲しい場合
■1. DBIx::Classのインストール 例によってCPANコマンドでインストールします。 unixのシェルから perl -MCPAN -e shell cpan > install DBIx::Class cpan > install DBIx::Class::Schema::Loader でOK。 (何か入力が促されたらそのままEnterを押せばいいです) ■ 2.テーブルスキーマの自動生成 unixのシェルでプログラムを作成するディレクトリに移ってから perl -MDBIx::Class::Schema::Loader=make_schema_at,dump_to_dir:./lib -e 'make_schema_at "Hoge::Schema", {relationships => 1, debug => 1}, ["dbi:mysql:hoge","user","pa
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く