2

Windows サーバーのセットアップを Linux (Red Hat 7.2) サーバーに移行する必要がありました。以前は、Windows マシンでpdo_sqlsrvドライバーを使用していました。Linux では、pdo_odbcドライバーをインストールしました。しかし、Zend Framework 2 はそのままではこれをサポートしていないため、現在動作する ZF2 API ドキュメントを使用して自分で db 構成を見つけました。これは構成です:

'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 を設定しようとしました (smozgurの回答で、ネイティブ クライアント エラー 'Connection is busy with results for another command' を修正する方法はこちらで説明されています)。しかし、そのような /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

これを機能させるために、セットアップで何かが欠けていますか?

4

1 に答える 1

1

データベース接続をいじってみたところ、'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'
),

これが次の検索者に役立つことを願っています!

于 2016-01-27T13:33:08.913 に答える