【发布时间】:2015-02-26 13:01:37
【问题描述】:
我使用很棒的PHP-GDS 使用架构创建了一个索引:
$obj_product_schema = (new Schema('Product'))
->addString('url')
->addString('date')
->addString('name', TRUE)
->addInteger('votes', TRUE);
但是,如果我尝试使用如下排序查询返回对象子集,则会收到“未找到匹配索引”错误。
$queryStr = "SELECT * FROM Product WHERE date='" . $dateQ . '" ORDER BY votes ASC ";
$obj_event_store->query($queryStr);
$products = $obj_event_store->fetchPage(5);
错误:
Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling POST https://www.googleapis.com/datastore/v1beta2/datasets/app/runQuery: (412) no matching index found.'
【问题讨论】:
-
stackoverflow.com/questions/28424157/… 你也有同样的问题 ;) 先在 devserver 中运行,然后上传 :)。您显示的不是索引,而是您的架构。
-
对不起帕特里斯,但请阅读问题。检索数据时查询工作正常,例如 '"SELECT * FROM Product WHERE date='" 。 $日期Q 。 '" 有效,但是当附加 'ORDER BY' 时,查询失败并出现“未找到匹配索引”错误。
-
您的 order by 也会影响所需的索引,因此您很可能有一个日期索引,但没有一个用于“日期+投票”的索引。在进一步调查之前,我会坚持我的第一件事;)。也可以在这里发布您的 datastore-index.yaml 吗?
标签: php google-app-engine google-cloud-datastore