我试图在Yii中使用Firebird2.1(使用插件http://www.yiiframework.com/extension/yii2-firebird/),但是在执行插入(保存)命令时遇到了问题,错误消息是:
SQLSTATEHY000:一般错误:-502游标未打开
我发现Yii生成带有返回子句的insert语句,例如::
INSERT INTO CONTRACTS (contract_no) VALUES (10002) RETURNING contract_no我猜问题是: Yii试图读取这个insert命令的结果,但是Yii插件出现了问题,它在pdoStatement->execute之后立即关闭游标。异常在yii/db/Command.php文件函数protected function queryInternal($method, $fetchMode = null)中生成,其代码如下:
$this->pdoStatement->execute();
if ($method === '') {
$result = new DataReader($this);
} else {
if ($fetchMode === null) {
$fetchMode = $this->fetchMode;
}
try {
$result = call_user_func_array([$this->pdoStatement, $method], (array) $fetchMode);
$this->pdoStatement->closeCursor();
} catch (Exception $ex) {
Yii::trace('Fetch error', 'yii\db\Command::query');
}
}我有以下问题:
call_user_func_array([$this->pdoStatement, $method], (array) $fetchMode);在哪里纠正呢?我想这个方法应该在Yii插件中被过度使用,目的是检查游标是否打开,如果有必要,打开游标?
发布于 2017-01-30 18:57:15
回答第一个问题。对于YII2,我使用"edgardmessias/yii2-firebird":"^0.7.1",扩展为Firebird 2.1.1883。我发现最好不是用ActiveDataProvider,而是用
$dataProvider =新ArrayDataProvider([
在SearchModel里。这种方式在寻找关系时并不是那么多的错误。但主要问题是区分大小写的搜索。我总是需要在搜索字段中写同样的字母,无论是大还是小。
https://stackoverflow.com/questions/39411482
复制相似问题