erreur unixODBC IM001

Je reçois l'erreur suivante en essayant de faire une requête simple. Je ne peux pas comprendre ce qui a changé.

Voici un exemple de la class sqlalchemy (Elixir):

class Song(Entity): using_options(tablename='tbSongs', autoload=True) using_table_options(schema='apra') 

La connection à la database est ok et les classs construisent bien car je peux faire dir(Song) et voir toutes les colonnes correctes. Cependant, une simple requête ne fonctionnera pas.

Voici une requête sur cette class et la sortie résultante:

 >>> songs = Song.query.all() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 1729, in all return list(self) File "/usr/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 1839, in __iter__ return self._execute_and_instances(context) File "/usr/lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 1854, in _execute_and_instances result = conn.execute(querycontext.statement, self._params) File "/usr/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1399, in execute params) File "/usr/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1532, in _execute_clauseelement comstackd_sql, distilled_params File "/usr/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1640, in _execute_context context) File "/usr/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1633, in _execute_context context) File "/usr/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 325, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.DBAPIError: (Error) ('IM001', '[IM001] [unixODBC][Driver Manager]Driver does not support this function (0) (SQLColAtsortingbute)') 'SELECT [tbSongs_1].[ID_Song] AS [apra_tbSongs_ID_Song], [tbSongs_1].[Album] AS [apra_tbSongs_Album], [tbSongs_1].[Title] AS [apra_tbSongs_Title], [tbSongs_1].[Composer] AS [apra_tbSongs_Composer], [tbSongs_1].[Performer] AS [apra_tbSongs_Performer], [tbSongs_1].[TrackNumber] AS [apra_tbSongs_TrackNumber], [tbSongs_1].[Duration] AS [apra_tbSongs_Duration], [tbSongs_1].[RecordLabel] AS [apra_tbSongs_RecordLabel], [tbSongs_1].[Notes] AS [apra_tbSongs_Notes], [tbSongs_1].[Class] AS [apra_tbSongs_Class], [tbSongs_1].[SongID] AS [apra_tbSongs_SongID], [tbSongs_1].[Deleted] AS [apra_tbSongs_Deleted] \nFROM apra.[tbSongs] AS [tbSongs_1]' () >>> 

Détails de configuration:

  • 32bit Arch Linux
  • Python 2.7.2
  • sqlalchemy 0.7.2
  • Elixir 0.7.1
  • FreeTDS 0.82-5
  • unixodbc 2.3.0-1

/etc/odbcinst.ini:

 [ODBC Drivers] tds = Installed [tds] Driver = /usr/lib/libtdsodbc.so Setup = /usr/lib/libtdsodbc.so 

/etc/odbc.ini:

 [ODBC] Trace = 0 [DBNAME] Driver = TDS Trace = No Server = xx.xx.xx.xx\dbname Database = dbname Port = 1433 

J'ai aussi cette erreur et la conversion vers unixODBC 2.2.12 la corrige pour moi (notez que je ne peux pas get PyOBDC pour build avec 2.2.14, doit être 2.2.12). Je suis assez troublé par l'état des nouvelles versions des outils ODBC pour Unix (Freetds 0.91 est également très problématique).

Essayez de supprimer FreeTDS préemballés, unixODBC et pyodbc. Rebuild à partir de sources en utilisant les versions 0.91, 2.3.0 et 2.1.9 respectivement a fonctionné pour moi mais cela peut être un process délicat. Je l'ai couvert en détail sur un sujet récent du groupe SQLAlchemy à http://groups.google.com/group/sqlalchemy/browse_thread/thread/971e068032d51dd5

Pouvez-vous fournir une trace ODBC de cet événement. Je viens juste de prendre conscience de ce problème et je ne peux pas (pour le moment) le reproduire. Donc, si vous pouvez m'envoyer le journal, il devrait être un pas dans la bonne direction.