Я запускаю Ubuntu 13.10 с установленным FreeTDS и ODBC (пакетом: php5-odbc). Я использую tds version = 8.0, но также попробовал tds version = 7.2.Один из SELECT с ошибкой использует unixOdbc - SQLSTATE [24000]: Неверное состояние курсора
Я использую PDO и это мой DSN:
$dsn = sprintf('odbc:Driver=FreeTDS;Server=%s;Port=1433;Database=%s', DB_SQL_SERVERNAME, DB_DB_NAME);
подключить к экземпляру MSSQL и выполнять некоторые команды INSERT/SELECT запросов с использованием транзакций, однако я не могу понять, почему этот запрос не будет:
SELECT id
FROM tblColumns
WHERE siteID = 10063 AND
typeID = 1000 AND
extendedTypeID = 18 AND
label = 'RwThiFc85A'
дает ошибку:
SQLSTATE[24000]: Invalid cursor state: 0 [FreeTDS][SQL Server]Invalid cursor state (SQLExecute[0] at /build/buildd/php5-5.5.3+dfsg/ext/pdo_odbc/odbc_stmt.c:254)
Я бегу грозди запросов BEFOR похож e, и они выполняются хорошо, например:
SELECT id
FROM tblColumns
WHERE siteID = 10063 AND
typeID = 1000 AND
extendedTypeID = 3 AND
label = 'VwThiFc91B'
У вас есть идеи, почему это происходит?
У меня не было таких проблем с dblib и sqlsrv, однако теперь я на Unix и не могу использовать sqlsrv, и из-за проблем с dblib кодировкой UTF-8 я пытаюсь использовать ODBC.
Я использую только query() вместо prepare() и execute(). Разве это имеет значение? – NeverEndingQueue
Также я не понимаю, что вы имеете в виду, говоря: «одновременно открывается два разных запроса». Я запускаю один из запросов, и после его запуска есть следующий запрос, нет возможности запустить 2 сразу или что-то в этом роде. Правильно? – NeverEndingQueue
@NeverEndingQueue: Я подозреваю, что первые rs не закрыты, поэтому rs1.Close() должен исправить это. –