UnixODBC ошибка IM001 - PullRequest
       40

UnixODBC ошибка IM001

2 голосов
/ 10 сентября 2011

Я получаю следующую ошибку при попытке выполнить любой простой запрос.Я просто не могу понять, что изменилось.

Вот пример класса sqlalchemy (Elixir):

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

Соединение с базой данных в порядке, и классы создаются нормально, потому что я могусделать dir(Song) и увидеть все правильные столбцы.Однако простой запрос не будет работать.

Вот запрос к этому классу и полученный результат:

>>> 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], [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]' ()
>>> 

Подробности настройки:

  • 32bitArch Linux
  • Python 2.7.2
  • sqlalchemy 0.7.2
  • эликсир 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

Ответы [ 3 ]

1 голос
/ 20 сентября 2011

У меня также есть эта ошибка, и ее снижение до unixODBC 2.2.12 исправляет ее для меня (обратите внимание, я не могу собрать PyOBDC для сборки с 2.2.14, должен быть 2.2.12). Я весьма обеспокоен состоянием новых выпусков инструментов ODBC для Unix (Freetds 0.91 также очень проблематичен).

1 голос
/ 21 сентября 2011

Попробуйте удалить предварительно упакованные FreeTDS, unixODBC и pyodbc. Восстановление из исходных кодов с использованием версий 0.91, 2.3.0 и 2.1.9 соответственно сработало для меня, но это может быть сложным процессом. Я подробно остановился на недавнем обсуждении группы SQLAlchemy на http://groups.google.com/group/sqlalchemy/browse_thread/thread/971e068032d51dd5

0 голосов
/ 15 сентября 2011

Можете ли вы предоставить ODBC след этого происшествия. Я только что осознал эту проблему и не могу (на данный момент) воспроизвести ее. Так что, если вы можете отправить мне журнал событий, это должно быть шагом в правильном направлении.

...