Настройка unixodbc и freetds на OSX и Rails 2.3.x
Я пытаюсь настроить unixodbc на OSX (10.7.3), но похоже, что iODBC уже в пути.
Мой конфиг / database.yml:
development:
adapter: sqlserver
encoding: UTF8
mode: odbc
username: user
password: passwd
dsn: MY_DSN
ruby-obdc установлен и находится в Gemfile:
gem 'ruby-odbc', :require => 'odbc_utf8'
/usr/local/etc/freetds.conf:
[MY_SERVER]
host = host.bla.com
port = 1433
tds version = 8.0
client charset = UTF-8
/usr/local/etc/odbc.ini
[MY_DSN]
Driver=/usr/local/lib/libtdsodbc.so
Description=Sql Server Local
Servername=MY_SERVER
Port=1433
Database=my_database
Когда я бегу script/console
и попробуйте получить доступ к любой модели:
ODBC продукта:: Ошибка: IM002 (0) [iODBC][Driver Manager] Не найдено имя источника данных и не указан драйвер по умолчанию. Драйвер не может быть загружен
Кажется, iODBC используется для подключения к базе данных, когда я хочу использовать unixodbc. Как я могу заставить мое приложение rails использовать unixodbc вместо iODBC?
3 ответа
Решено путем компиляции ruby-odbc для библиотек Homebrew. Это работает, если вы используете OSX:
gem install ruby-odbc -- --with-odbc-lib=/usr/local/lib
iODBC, поддерживаемый и поддерживаемый моим работодателем, входит в состав Mac OS X начиная с Jaguar (10.2.x).
Вам будет лучше обновить iODBC всеми последними исправлениями (Apple отстает от них), чем переходить на UnixODBC. Вы также можете найти некоторые преимущества в опубликованных нами документах Ruby+ODBC и Ruby-on-Rails.
Наконец, лучше всего хранить все ваши настройки ODBC в расположениях файлов по умолчанию для Mac OS X -
/Library/ODBC/odbc.ini
/Library/ODBC/odbcinst.ini
/Users/*/Library/ODBC/odbc.ini
/Users/*/Library/ODBC/odbcinst.ini
Вы можете создавать символические ссылки из любого места, где вы можете захотеть иметь эти файлы, например:
ln -s ~/Library/ODBC/odbc.ini ~/.odbc.ini
Использование Homebrew. Необходимо использовать:
gem install ruby-odbc -- --with-odbc-dir=/usr/local/Cellar/unixodbc/2.3.2
Я не заметил этого раньше, но в ответе Педро он имеет with-odbc-lib
, не уверен, что это работает для его среды, но мне нужно, чтобы это было dir
, потому что я продолжал получать проверку для sql.h... без ошибок.