rootsmith wrote:
>
> Just a quick update ... Mac OS X is case preserving but case
> insensitive so a query directly within mysql for table "USER" using
> "user" will result correctly.  So this just deepens the mystery more -
> on UNIX either MySQLdb or SQLAlchemy is preserving the case of the
> table name as "USER" but on Mac OS X it is not preserving it, which
> should work, but whatever routine that underlies the search for the
> foreign key in the example I have given is not working.

Not much mystery here; MySQL's casing behavior is platform dependent. 
Here's some background at:

http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html

by far the easiest way to deal with this kind of issue is to use all case
insensitive identifiers throughout your database.   In SQLAlchemy,
specifying a name as all lower case (i.e. "users") indicates case
insensitive treatment, where no quoting will be applied.




>
> On Oct 1, 10:27 pm, rootsmith <ke...@rootsmith.ca> wrote:
>> Previously I was doing development of a project on an Ubuntu 9.04
>> machine with MySQL 5.0 and just recently switched to doing development
>> on a MacBook Pro.  I installed identical versions of MySQL on the
>> MacBook.  I used the exact same source files and installed the same
>> versions of all libraries for the project, however, when I try to
>> initialize the model on the MacBook I get the following stack trace:
>>
>> File "/Users/kevin/mydevenv/lib/python2.6/site-packages/
>> SQLAlchemy-0.5.6-py2.6.egg/sqlalchemy/orm/__init__.py", line 751, in
>> mapper
>>     return Mapper(class_, local_table, *args, **params)
>>   File "/Users/kevin/mydevenv/lib/python2.6/site-packages/
>> SQLAlchemy-0.5.6-py2.6.egg/sqlalchemy/orm/mapper.py", line 194, in
>> __init__
>>     self._configure_inheritance()
>>   File "/Users/kevin/mydevenv/lib/python2.6/site-packages/
>> SQLAlchemy-0.5.6-py2.6.egg/sqlalchemy/orm/mapper.py", line 239, in
>> _configure_inheritance
>>     self.inherit_condition = sqlutil.join_condition
>> (self.inherits.local_table, self.local_table)
>>   File "/Users/kevin/mydevenv/lib/python2.6/site-packages/
>> SQLAlchemy-0.5.6-py2.6.egg/sqlalchemy/sql/util.py", line 135, in
>> join_condition
>>     "between '%s' and '%s'" % (a.description, b.description))
>> sqlalchemy.exc.ArgumentError: Can't find any foreign key relationships
>> between 'USER' and 'MANAGER'
>>
>> This is despite the fact that there is a foreign relation between the
>> two as follows on the MANAGER table:
>>
>> CONSTRAINT FK_MANAGER_USER FOREIGN KEY (user_id)
>>     REFERENCES `USER`(user_id)
>>
>> I have traced the problem so far to the fact that on Ubuntu, the
>> ForeignKey in SQLAlchemy is built as ForeignKey(u'USER.user_id') and
>> on the Mac it is ForeignKey(u'user.user_id').  This has been confirmed
>> by tracing the code into sql.util.join_condition where the call
>> fk.get_referant() is being made.
>>
>> Note again, this is the EXACT SAME code running on both machines.  I
>> don't know if it is a MySQL setting (unlikely), MySQLdb, or SQLAlchemy
>> that is causing the incorrect case issue on the table name.  Does
>> anyone know off hand what might be going on here?
>>
>> Just to confirm, the table in the database is called "USER" and
>> therefore any search for "user" will not yield any results.
> >
>


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to