2010-09-09 00:25:00 追記
本エントリにおける結果は,サーバを立ててのもので,この際,何かしらの理由で一時的によけておいた DBIx-Skinny-0.0718 を読み込んでいたのが原因でした.DBIx-Skinny-0.0720 ではこのような現象は起こりません.
本エントリにおける結果は,サーバを立ててのもので,この際,何かしらの理由で一時的によけておいた DBIx-Skinny-0.0718 を読み込んでいたのが原因でした.DBIx-Skinny-0.0720 ではこのような現象は起こりません.
CLIでの確認コードを掲載しておきます.
はじめに
DBIx::Skinny-0.0720 で DBIx::Skinny#update がうまく動いていなっぽい部分があったので,デバッグ出力によるメモ.1つ前のバージョン と比較してみます.
簡単に確認
user_id
,nickname
,t_mod
で構成される user
テーブルに対して操作を行ってみます.
「DBIx::Skinny’s Exception」を表示させるのが手っ取り早いので,与えるパラメータの一部をワザとミスすることにします.
# $skinny: DBIx::Skinny オブジェクト $skinny->update( 'user', {nickname => 'issm'}, {user_idx => 9}, # ワザとミス.ホントは user_id ); |
こんな感じ.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@ DBIx::Skinny 's Exception @@@@@ Reason : DBD::mysql::st execute failed: Unknown column 'user_idx' in 'where clause' at lib/DBIx/Skinny.pm line 754. SQL : UPDATE user SET `nickname` = ?, `t_mod` = ? WHERE (user_idx = ?) BIND : $VAR1 = [ 'issm', 1283934955, [ '9' ] ]; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
DBIx::Skinny-0.0719 では,同メソッドはうまく動作してくれます.比較として,同様にミスして「Exception」を出力してみます.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@ DBIx::Skinny 's Exception @@@@@ Reason : DBD::mysql::st execute failed: Unknown column 'user_idx' in 'where clause' at lib/DBIx/Skinny.pm line 754. SQL : UPDATE user SET `nickname` = ?, `t_mod` = ? WHERE (user_idx = ?) BIND : $VAR1 = [ 'issm', 1283934516, '9' ]; @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
まとめ
$skinny->update($table_name, \%update_row_data, [\%update_condition])
DBIx::Skinny – search.cpan.org
まだソースコードは読んでいませんが,パラメータ \%update_condition
を与えると問題が起きる,ということでしょうかね.
おわりに
DBIx::Skinny-0.0720 で DBIx::Skinny#update がうまく動いていなっぽい部分があったので,1つ前のバージョンのものとのデバッグ出力の違いを見てみました.
cpanm を使えば,最新でないバージョンのモジュールもサクッと入れられるので,便利ですね!
こちらもあわせてどうぞ
最近の閲覧数
- None Found