I checked the latest version (I have been using elixir-0.4.0.dev_r209)
and this bug seems to have been fixed.

However on upgrading to Elixir 0.5.2, it seems not to attempt to
create the database for me - is this something to do with autosetup
now defaulting to false (I am using Turbogears tg-admin sql create to
supposedly kick of the generate)?

Confused,
Tim

On Apr 15, 11:34 pm, "Dr.T" <[EMAIL PROTECTED]> wrote:
> This looks like a bug in Elixir, which passes the user specified name
> for the constraint *alongside* the constraint name that it generates
> rather than instead of it.
>
> i.e. (in relationships.py):
>
> source_desc.add_constraint(ForeignKeyConstraint(
>                                             fk_colnames, fk_refcols,
>                                             name=fk_name,
>                                             **self.constraint_kwargs))
>
> fk_name is an auto-generated name for the constraint and the
> (constraint) name specified in the constraint_kwargs dict is passed as
> well via **self.constraint_kwargs to the ForeignKeyConstraint
>
> To avoid sending two names, you could precede this call with something
> like:
>
>             try:
>                 if self.constraint_kwargs['name']:
>                     fk_name = self.constraint_kwargs['name']
>                     del self.constraint_kwargs['name']
>             except KeyError:
>                 pass
>
> Having overcome this problem however, I am left with the generated
> index names being too long - it is possible to get around this
> problem?
> e.g.
> sqlalchemy.exceptions.DatabaseError: (DatabaseError) ORA-00972:
> identifier is too long
>  'CREATE INDEX "ix_CommunicationAddressee_communication_id" ON
> "CommunicationAddressee" (communication_id)' {}
>
> Thanks for your thoughts,
>
> Tim
>
> On Apr 14, 4:55 pm, "Dr.T" <[EMAIL PROTECTED]> wrote:
>
> > I have been developing using SQLite at the backend for development
> > purposes and am now switching to Oracle.
>
> > Unfortunately the foreign key constraint names generated by Elixir/
> > SQLAlchemy exceed the 30 char limit on identifier name in Oracle. (I
> > have already sorted the table & intermediate table names out with
> > their relevant options)
>
> > I read that "constraint_kwargs" is a dictionary which can be passed in
> > the column definition and the source suggests that the constraint name
> > should be specified as "name" within this dict.
>
> > However when I specify the constraint_kwargs={"name":
> > "UplFile_DocId_FK"} in the column declaration (example DSL pasted
> > below) , I get an error on generating the schema:
>
> >  <<  TypeError: _FigureVisitName object got multiple values for
> > keyword argument 'name' >>
>
> > What is the correct means of specifying the name of a foreign key?
>
> > ########################################################################
> > class UploadedFile(Entity):
> >     """ A file uploaded representing the rendering of a document"""
>
> >     # fields
> > --------------------------------------------------------------
> >     has_field('id', Integer, primary_key=True)
> >     has_field('filename', Unicode(100), nullable=False)
> >     has_field('abspath', Unicode(2000), nullable=False)
> >     has_field('size', Integer)
>
> >     # relationships
> > ----------------------------------------------------
> >     belongs_to('document', of_kind='Document',
> > constraint_kwargs={"name": "UplFile_DocId_FK"})
> >     using_options(tablename='UploadedFile')
>
> > Thanks for any help,
>
> > Tim
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"SQLElixir" 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/sqlelixir?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to