我试图在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