开发者

unixODBC error IM001

I get the following error when trying to do any simple query. I just can't figure out what's changed.

Here is an example of the sqlalchemy (Elixir) class:

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

The database connection is ok and the classes construct ok because I can do dir(Song) and see all the correct columns. However, a simple query won't work.

Here is a query on that class and the resulting output:

>>> 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
    compiled_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) (SQLColAttribute)') '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], [tbSong开发者_运维百科s_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]' ()
>>> 

Setup details:

  • 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


I have this error as well and downgrading to unixODBC 2.2.12 fixes it for me (note I can't get PyOBDC to build with 2.2.14, has to be 2.2.12). I'm fairly troubled by the state of the newer releases of ODBC tools for unix (Freetds 0.91 is very problematic as well).


Try removing prepackaged FreeTDS, unixODBC and pyodbc. Rebuilding from sources using version 0.91, 2.3.0 and 2.1.9 respectively has worked for me but it can be a tricky process. I have covered it in some detail on a recent thread on SQLAlchemy group at http://groups.google.com/group/sqlalchemy/browse_thread/thread/971e068032d51dd5


Can you provide a ODBC trace of this occuring. I have only just become aware of this problem and I can't (at the moment) reproduce it. So if you can send me the log of it happing it should be a step in the right direction.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜