首页 文章

Ignite:使用PHP PDO选择问题

提问于
浏览
0

使用PHP PDO访问Ignite群集 .

1)使用PHP PDO脚本创建表 .

生成的缓存在Ignite Web控制台中可见 .

可以从Ignite Web控制台发出SQL SELECT / INSERT .

可以使用独立的PHP PDO发出SQL INSERT .

因此SQL表/缓存似乎功能齐全,但是:

2)PHP PDO脚本内部的SELECT失败 .

PHP PDO脚本与Ignite站点上提供的示例脚本基本相同 .

<?php
try {
    $dbh=new PDO('odbc:ApacheIgniteDSN');
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $res=$dbh->query('SELECT id from Person');
// no errors up to here
//exit;
    if ($res == FALSE)
        print_r("Exception");

    // the following results in errors
    foreach($res as $row) {
        print_r($row);
    }
}
catch (PDOException $e) {
    print "Error: " . $e->getMessage() . "\n";
    exit;
}*

从命令行运行时,它会生成:

错误:SQLSTATE [HYC00]:未实现可选功能:0不支持指定的属性 . (在ext \ pdo_odbc \ odbc_stmt.c:543处的SQLFetchScroll [0])

这不是很有用,但在Ignite节点上会记录以下内容:

[17:00:30,074][SEVERE][grid-nio-worker-client-listener-0-#30][ClientListenerProcessor] Failed to process selector key [ses=GridSelectorNioSessionImpl [worker=ByteBufferNioClientWorker [readBuf=java.nio.HeapByteBuffer[pos=0 lim=8192 cap=8192], super=AbstractNioClientWorker [idx=0, bytesRcvd=0, bytesSent=0, bytesRcvd0=0, bytesSent0=0, select=true, super=GridWorker [name=grid-nio-worker-client-listener-0, igniteInstanceName=null, finished=false, hashCode=1314397987, interrupted=false, runner=grid-nio-worker-client-listener-0-#30]]], writeBuf=null, readBuf=null, inRecovery=null, outRecovery=null, super=GridNioSessionImpl [locAddr=/100.96.3.26:10805, rmtAddr=/100.96.3.1:6733, createTime=1523811628969, closeTime=0, bytesSent=69, bytesRcvd=75, bytesSent0=69, bytesRcvd0=75, sndSchedTime=1523811629031, lastSndTime=1523811629031, lastRcvTime=1523811629020, readsPaused=false, filterChain=FilterChain[filters=[GridNioAsyncNotifyFilter, GridNioCodecFilter [parser=ClientListenerBufferedParser, directMode=false]], accepted=true]]]
java.io.IOException: Connection reset by peer

请注意,我使用CREATE TABLE命令(来自PHP PDO脚本)创建了SQL表,而不是使用queryEntities在缓存中显式指定它 . 但是,Web控制台可以正确地看到它,您可以在那里查询它,因此可以假设PDO中的SELECT也可以工作,但事实并非如此 .

1 回答

  • 0

    这是一个known issue,它是由MS游标库引起的,在某些情况下显然是由PDO使用的 . 它已被修复,并且补丁已合并为主控,因为Ignite的Jira状态,因此您可以等待2.5版本,或使用主分支代码 .

相关问题