Соединение с MS SQL Server в Linux занято с использованием Zend Framework 2 и драйвера ODBC

Мне нужно было перенести установку сервера Windows на сервер Linux (Red Hat 7.2). Ранее мы использовали pdo_sqlsrv драйвер на машине с Windows. На Linux мы установили PDO_ODBC Водитель. Но так как Zend Framework 2 не поддерживает это «из коробки», я сам выяснил конфигурацию базы данных, используя документацию по ZF2 API, которая работает сейчас. Это конфигурация:

'db' => array(
'driver' => 'pdo',
'username' => 'ourDbUsername',
'password' => 'ourDbPassword',
'dsn' => 'odbc:DRIVER={SQL Server Native Client 11.0};UID=ourDbUsername;PWD=ourDbPassword;DATABASE=ourDbName;SERVER=ourServerIP',
'charset' => 'UTF-8'
),

Все идет нормально. Если мы запустим наше приложение, все пойдет так, как ожидалось, пока простой запрос GET не сможет каждый раз получить детали объекта. Я не могу заставить запрос работать, даже если я удаляю другие запросы, которые выполняются до него. Даже цепочка запроса по-другому не помогает. Это ошибка:

Statement could not be executed (HY000 - 0 - [Microsoft][SQL Server Native Client 11.0]
Connection is busy with results for another command (SQLExecute[0] at /builddir/build/BUILD/php-5.4.16/ext/pdo_odbc/odbc_stmt.c:254) - HY000)

Мы попытались установить MARS_Connection (описано здесь Как исправить ошибку собственного клиента «Соединение занято результатами для другой команды»? на ответ смозгур). Но у нас нет такого файла /etc/odbc.ini, только файл /etc/odbcinst.ini. Итак, наш файл /etc/odbcinst.ini теперь выглядит так:

[ODBC Driver 11 for SQL Server]
Description=Microsoft ODBC Driver 11 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0
Threading=1
UsageCount=1
MARS_Connection=yes

Я что-то пропустил в моей настройке, чтобы заставить это работать?

2

Решение

Я поигрался с моим подключением к БД и, как оказалось, добавил «MARS_Connection = yes;» к моей DSN делает работу.

'db' => array(
'driver' => 'pdo',
'username' => 'ourDbUsername',
'password' => 'ourDbPassword',
'dsn' => 'odbc:DRIVER={SQL Server Native Client 11.0};UID=ourDbUsername;PWD=ourDbPassword;DATABASE=ourDbName;SERVER=ourServerIP;MARS_Connection=yes;',
'charset' => 'UTF-8'
),

Надеюсь, это поможет следующим искателям!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]