FreeTDSとODBC(パッケージ:php5-odbc)をインストールしたUbuntu 13.10を実行しています。 私はtds version = 8.0を使用しましたが、tds version = 7.2も試しました。unixOdbcを使用してSELECTの1つが失敗する - 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似たクエリの束を実行していますたとえば、
SELECT id
FROM tblColumns
WHERE siteID = 10063 AND
typeID = 1000 AND
extendedTypeID = 3 AND
label = 'VwThiFc91B'
なぜそれが起こるのでしょうか?
私はdblibとsqlsrvにこのような問題はありませんでしたが、今はUnix上でsqlsrvを使用できません。また、dblib UTF-8エンコーディングに関する問題のため、ODBCを使用しようとしています。
私はprepare()とexecute()の代わりにquery()を使用しています。違いはありますか? – NeverEndingQueue
また、私はあなたが言っていることを理解していない: "2つの異なる要求が同時に開く"。私はクエリの1つを実行し、それが実行された後に次のクエリがある、2を一度に実行する方法やそのようなものはありません。右? – NeverEndingQueue
@ NeverEndingQueue:最初のrsが閉じていないと思われるので、rs1.Close()はそれを修正する必要があります。 –