Мы выполняем совершенно несерьезный запрос и получаем следующую ошибку:
PDOException : SQLSTATE[24000]: Invalid cursor state: 0 [FreeTDS][SQL Server]Invalid cursor state (SQLExecute[0] at /builddir/build/BUILD/php-5.5.13/ext/pdo_odbc/odbc_stmt.c:254)
Из PHP мы используем pdo_odbc
библиотека для подключения через FreeTDS к SQLServer 2008
Оказывается, это был предыдущий запрос, который вызывал проблемы. Мы использовали:
$pdo_statement->fetch(\PDO::FETCH_ASSOC);
выйти из одного ряда, но ничего не делать с этим после. Это оставляло курсор открытым, который затем выдавал ошибку, а затем в следующий раз выполнялся любой запрос. Для нас закрытие курсора до следующего запроса было способом продвижения вперед.
$pdo_statement->closeCursor();
Также стоит отметить, что используя fetchAll()
(в предыдущем запросе) также является исправлением, так как при этом курсор не остается открытым.
$pdo_statement->fetchAll(\PDO::FETCH_ASSOC);
Других решений пока нет …