[Dbix-class] issue with deploy() and pgsql's timestamp with time
zoneUser-Agent: SquirrelMail/1.5.2 [SVN]
Moritz Onken
onken at houseofdesign.de
Tue May 26 19:58:37 GMT 2009
Am 23.05.2009 um 22:14 schrieb Moritz Onken:
>
> Am 23.05.2009 um 19:32 schrieb Guillaume Chambriat:
>
>> Hi,
>>
>> I've a PostgreSQL table:
>>
>> create table date_fields (
>> id serial primary key,
>> message integer references messages(id)
>> on delete cascade,
>> value timestamp with time zone
>> );
>>
>> And the corresponding schema class, generated by
>> DBIx::Class::Schema::Loader, has the following code for the "value"
>> column :
>>
>> "value",
>> {
>> data_type => "timestamp with time zone",
>> default_value => undef,
>> is_nullable => 1,
>> size => 8,
>> },
>>
>> When I try to deploy this schema to an empty DB, I get the following
>> error message (roughly translated from French into English):
>>
>> DBIx::Class::Schema::deploy(): DBI Exception: DBD::Pg::db do failed:
>> ERROR: syntax error near " ( "
>> LINE 5: "value" timestamp with time zone(6),
>> ^ at ./script/
>> myapp_hub_spawn_db.pl line 45
>> (running "
>> CREATE TABLE "date_fields" (
>> "id" serial NOT NULL,
>> "message" smallint,
>> "value" timestamp with time zone(6),
>> PRIMARY KEY ("id")
>> )") at /usr/local/share/perl/5.10.0/DBIx/Class/Storage/DBI.pm line
>> 1811, <STDIN> line 4.
>>
>> The same SQL code, copied in a psql shell, triggers the same
>> error message. Removing '(6)' obviously fixes it.
>>
>> Any idea why IdontKnowWhichModule (SQL::Translator, another one?)
>> adds
>> '(6)' to the generated SQL code?
>
> This is because you defined a size on that column.
>
> Remove size => 8 and deploy will do the right thing. I think it's
> both a problem in Schema::Loader and SQL::Translator.
>
> moritz
Actually it's a SQL::Translator problem:
The correct postgresql syntax for a timestamp column with a precision
is:
timestamp (6) with time zone
instead of "timestamp with time zone (6)".
Patches welcome :-)
moritz
More information about the DBIx-Class
mailing list