Это, похоже, больше всего началось с тех пор, как я обновляю свой DBIx :: Class, и я не могу понять, что я делаю неправильно.Почему я использую unininitialized значение в sprintf из объекта DBIx :: Class :: InflateColumn :: DateTime?
Use of uninitialized value in sprintf at /opt/perl-5.10.1/lib/site_perl/5.10.1/DBIx/Class/InflateColumn/DateTime.pm line 192.
at /opt/perl-5.10.1/lib/site_perl/5.10.1/DBIx/Class/InflateColumn/DateTime.pm line 192
DBIx::Class::InflateColumn::DateTime::_flate_or_fallback('OpusVL::AppKitX::TelecomsBilling::Schema::Result::AsteriskCdr...', '2009-11-13 09:00:00', 'HASH(0x2a85488)', 'parse_%s') called at /opt/perl-5.10.1/lib/site_perl/5.10.1/DBIx/Class/InflateColumn/DateTime.pm line 199
Мое определение столбца в файле результата есть
package Module1::Schema::Result::AsteriskCdrRecord;
# Created by DBIx::Class::Schema::Loader
# DO NOT MODIFY THE FIRST PART OF THIS FILE
use strict;
use warnings;
use Moose;
use MooseX::NonMoose;
use namespace::autoclean;
extends 'DBIx::Class::Core';
__PACKAGE__->load_components("InflateColumn::DateTime");
__PACKAGE__->table("asterisk_cdr_records");
__PACKAGE__->add_columns(
"record_id",
{
data_type => "integer",
is_auto_increment => 1,
is_nullable => 0,
sequence => "asterisk_cdr_records_record_id_seq",
},
"import_id",
{ data_type => "integer", is_foreign_key => 1, is_nullable => 0 },
"line",
{ data_type => "integer", is_nullable => 0 },
"account_ref",
{ data_type => "varchar", is_foreign_key => 1, is_nullable => 0, size => 20 },
"b_number",
{ data_type => "varchar", is_nullable => 0, size => 80 },
"call_start",
{ data_type => "timestamp", is_nullable => 0 },
"call_end",
{ data_type => "timestamp", is_nullable => 0 },
"created",
{
data_type => "timestamp",
default_value => \"current_timestamp",
is_nullable => 0,
original => { default_value => \"now()" },
},
"updated",
{
data_type => "timestamp",
default_value => \"current_timestamp",
is_nullable => 0,
original => { default_value => \"now()" },
},
);
__PACKAGE__->set_primary_key("record_id");
__PACKAGE__->add_unique_constraint(
"idx_astcdr_records_uni",
["account_ref", "b_number", "call_start", "call_end"],
);
__PACKAGE__->belongs_to(
"import_id",
"Module1::Schema::Result::AsteriskCdrImport",
{ import_id => "import_id" },
{ is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" },
);
# Created by DBIx::Class::Schema::Loader v0.07002 @ 2010-10-15 10:08:29
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:mKgpEpbGV/m/CgsjvKLzZA
__PACKAGE__->load_components(qw/TimeStamp Core/);
# Adjust some column data that was automatically output by the _create.pl script.
__PACKAGE__->add_columns
(
# Force these to inflate via DataTime.
"call_start",
{
inflate_datetime => 1 ,
data_type => "timestamp without time zone",
default_value => undef,
is_nullable => 0,
size => 8,
},
"call_end",
{
inflate_datetime => 1,
data_type => "timestamp without time zone",
default_value => undef,
is_nullable => 0,
size => 8,
},
# Add automatic date handling
"created",
{ data_type => 'datetime', set_on_create => 1 },
"updated",
{ data_type => 'datetime', set_on_create => 1, set_on_update => 1 },
);
возится делать вещи снова после перерыва, чтобы предотвратить Schema :: Loader от проблемы с меня модификации кода он генерируется.
Что нужно сделать, чтобы предотвратить предупреждения о неинициализированном значении? Это использует версию 0.08124 DBIx :: Class (хотя я думаю, что это произошло и с версией раньше, но я не стал разбираться с этой проблемой).
Синтаксис + для столбцов оказывается тем, что исправляет предупреждение. –