FreeTDS 및 ODBC (패키지 : php5-odbc)가 설치된 Ubuntu 13.10을 실행 중입니다. 나는 tds version = 8.0을 사용했지만 tds version = 7.2도 시도했다.unixOdbc - SQLSTATE [24000]을 사용하여 SELECT 중 하나가 실패합니다. 유효하지 않은 커서 상태
내가 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를 비슷한 쿼리의 송이를 실행하고 예를 들면 다음과 같습니다.
SELECT id
FROM tblColumns
WHERE siteID = 10063 AND
typeID = 1000 AND
extendedTypeID = 3 AND
label = 'VwThiFc91B'
왜 이런 일이 발생 했습니까?
나는 dblib 및 sqlsrv와 같은 문제가 없었지만 지금은 유닉스에서 sqlsrv를 사용할 수 없으며 dblib UTF-8 인코딩 문제로 인해 ODBC를 사용하려고합니다.
prepare() 및 execute() 대신 query()를 사용하고 있습니다. 어떤 차이가 있습니까? – NeverEndingQueue
또한 나는 당신이 말하는 의미가 무엇인지 이해하지 못한다 : "동시에 두 가지 다른 요청". 쿼리 중 하나를 실행하고 실행 한 후 다음 쿼리가 실행되면 즉시 2를 실행하는 방법이 없습니다. 권리? – NeverEndingQueue
@ NeverEndingQueue : 첫 번째 rs가 닫히지 않았다고 생각합니다. 따라서 rs1.Close()가이를 수정해야합니다. –