我試圖在DBIx::Class
中模仿update_or_new
函數中的SQL。DBIx ::類更新充氣列功能
UPDATE user SET lastseen = GREATEST(lastseen, ?::timestamp) WHERE userid = ?
它詳細介紹了充氣柱一個錯誤,說這是無法在undef
調用is_infinity
。
$schema->resultset('user')->update_or_new({
userid => 'peter',
lastseen => \[ 'GREATEST(lastseen, ?::timestamp)', DateTime->from_epoch(epoch => 1234) ]
});
我想這是因爲InflateColumn::DataTime
不期望在那裏的功能。這個問題有沒有乾淨的解決方法?
轉儲SQL。設置環境變量'DBIX_TRACE = 1'來查看它發送的內容。 http://search.cpan.org/~ribasushi/DBIx-Class-0.08270/lib/DBIx/Class/Manual/Troubleshooting.pod – 2014-08-28 18:01:32
它死於放氣/膨脹 - 嘗試執行sql之前。 – 2014-08-29 01:59:29
它是DBIC_TRACE = 1,但無論如何,DateTime-> from_epoch(1234)是不正確的。如果你想使用那個奇怪的紀元,你需要DateTime-> from_epoch(epoch => 1234)。 '$ perl -MDateTime -E'說DateTime-> from_epoch(1234)' 當調用DateTime :: from_epoch參數時奇數個參數[...] \t DateTime :: from_epoch(undef,1234)叫做-e line 1'這就是爲什麼inflate不起作用,因爲你傳遞的是undef,因爲你在DateTime構造函數上失敗 – mikew 2014-08-30 06:18:58