Thank you for the clarification!
On Mon, Sep 14, 2009 at 5:47 AM, Michael Bayer <[email protected]>wrote:
>
>
> On Sep 13, 2009, at 7:27 PM, andrei wrote:
>
> >
> > I try to create the table with column:
> >
> > Column('ends_at', TIMESTAMP, nullable=True, server_default="")
> >
> > That results to SQL:
> >
> > CREATE TABLE news (
> > ....
> > ends_at TIMESTAMP DEFAULT '',
> > ....
> > )
> >
> > But mysql TIMESTAMP columns are NOT NULL by default, so I get this
> > exception:
> >
> > (1067, "Invalid default value for 'ends_at'")
> >
> > However, a TIMESTAMP column can be allowed to contain NULL by
> > declaring it with the NULL attribute.
> > How to add NULL attribute explicitly? so the generated code would be:
> >
> > CREATE TABLE news (
> > ....
> > ends_at TIMESTAMP NULL DEFAULT '',
> > ....
> > )
>
> the MySQL dialect doesn't offer that feature right now.
>
> Here's a patch against trunk which would accomplish it:
>
> Index: lib/sqlalchemy/dialects/mysql/base.py
> ===================================================================
> --- lib/sqlalchemy/dialects/mysql/base.py (revision 6339)
> +++ lib/sqlalchemy/dialects/mysql/base.py (working copy)
> @@ -1330,7 +1330,9 @@
>
> if not column.nullable:
> colspec.append('NOT NULL')
> -
> + elif isinstance(column.type, types.TIMESTAMP):
> + colspec.append('NULL')
> +
> if column.primary_key and column.autoincrement:
> try:
> first = [c for c in column.table.primary_key.columns
>
> otherwise for now you'd have to issue that manually or use ALTER TABLE
> after the fact to set it up (i'd use DDL() for the ALTER). Or just
> use a DATETIME type instead.
>
>
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---