我正在运行安装了 FreeTDS 和 ODBC(软件包:php5-odbc)的 Ubuntu 13.10。
我使用 tds 版本 = 8.0,但也尝试过 tds 版本 = 7.2。
我正在使用 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]:无效的游标状态:0 [FreeTDS][SQL Server]无效
游标状态(SQLExecute[0] at
/build/buildd/php5-5.5.3+dfsg/ext/pdo_odbc/odbc_stmt.c:254)
我之前运行过很多类似的查询,并且它们执行得很好,例如:
SELECT id
FROM tblColumns
WHERE siteID = 10063 AND
typeID = 1000 AND
extendedTypeID = 3 AND
label = 'VwThiFc91B'
您知道为什么会发生这种情况吗?
我在 dblib 和 sqlsrv 方面没有遇到这样的问题,但是现在我在 Unix 上并且无法使用 sqlsrv,并且由于 dblib UTF-8 编码问题,我正在尝试使用 ODBC。
看来您同时打开了两个不同的结果集。您必须完成第一个 ResultSet 的处理并将其关闭,以便您可以重新使用该语句来创建第二个 ResultSet。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)