Я использую ODBC-драйвер Microsoft (версия 17) для SQL Server на сервере разработки. При отключенном пуле соединений приложение работает неприемлемо медленно. Если я включу пул подключений, приложение будет работать намного быстрее, но одна страница с большим количеством запросов успешно выполнит около пяти запросов, а затем умрет с
Неустранимая ошибка PHP: неверное значение SQLSTATE, присвоенное is_truncated_warning
Вот мой odbcinst.ini, на случай, если это поможет
[ODBC]
Pooling=Yes
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-17.0.so.0.5
UsageCount=1
CPTimeout=120
Я попытался увеличить количество соединений, но это не имеет никакого видимого эффекта.
Я попытался погуглить на ошибку и прочитал проблемы на Github, но никто другой, кажется, не сталкивался с этим.
Еще одна полезная информация: приложение работает отлично (быстро, использует пул), используя PHP5.6 и FreeTDS на IIS. Я надеялся, что смогу перейти на более новую версию PHP для Linux.
Иногда это может случиться с этим конкретным драйвером, если вы извлекаете поля длиной более 256 символов. Есть два способа обойти это:
Ограничьте поля до 256 символов. Это не всегда практично, но иногда люди решают делать такие вещи, как объединение большого количества данных из разных полей в одно с STUFF ((… FOR XML PATH (»)), 1, 1, »).
Старайтесь не связывать прямые вызовы с базой данных своими собственными функциями. Я обнаружил, что эта проблема возникает только в том случае, если для удобства использования я поместил вызовы функций, таких как sqlsrv_query, в свои собственные функции. Вызов функции sqlsrv _… () напрямую всегда работает.
В случае, если это полезно, фатальная ошибка всегда вызывается вызовом sqlsrv_fetch_object ().
Я периодически получал эту ошибку, вызывая метод PDO fetch ().
Для меня решение состояло в том, чтобы удалить мою бродячую виртуальную машину и воссоздать ее, так что, возможно, произошло некоторое повреждение или плохая комбинация драйверов PDO и ODBC