Оператор транзакции Ruby-ODBC не обновляет таблицу в MSSQL (Mac OSX)

Я успешно установил FreeTDS (1.00.15) с unixODBC (2.3.4) и получил доступ к MS SQL Server (2014). Мне удалось убедиться, что проблема, с которой я сейчас сталкиваюсь, не связана с FreeTDS и unixODBC. Это связано с тем, что из командной строки клиента isql я могу выполнять запросы как на выбор, так и на обновление.

Я запускаю El Capitan OS X с приложением Sinatra, в котором есть драгоценный камень ruby-odbc, что является обязательным требованием.

Приложение может правильно запрашивать записи из базы данных. Однако, когда я пытаюсь запустить метод ruby, который запускает оператор обновления, в журналах он говорит, что он успешен, но когда я проверяю базу данных, ничего не обновляется. Это мешает веб-приложению ruby ​​правильно обновлять источник данных.

Новая информация

Итак, сегодня утром (11.11.2016) я обнаружил, что ruby-odbc не работает, если оператор обновления выполняется в блоке транзакций. Однако, если я прокомментирую транзакцию, она отлично работает и фиксирует данные. Это разница в обработке кода между OS X и Fedora.

У кого-нибудь есть решение этой проблемы?


person Andrew Lobban    schedule 08.11.2016    source источник
comment
Я должен отметить, что это приложение уже корректно работает в Fedora 23. Я пытаюсь запустить это приложение изначально в OSX, не меняя само приложение и не ломая его для владельцев этого приложения.   -  person Andrew Lobban    schedule 10.11.2016


Ответы (1)


Если это что-то вроде использования FreeTDS с Python или PHP, вам придется установить autocommit=True как часть параметров подключения. Найдите здесь autocommit для более подробной информации:

http://www.ch-werner.de/rubyodbc/odbc.html

Удачи!

person FlipperPA    schedule 09.11.2016
comment
Я должен отметить, что это приложение уже корректно работает в Fedora 23. Я пытаюсь запустить это приложение изначально в OSX, не меняя само приложение. - person Andrew Lobban; 10.11.2016