无法为 couchbase 存储桶创建主索引。在 UBUNTU 14.04
Unable to CREATE PRIMARY INDEX for couchbase bucket. on UBUNTU 14.04
我正在尝试使用 laravel 4.2 从 couchbase 存储桶中获取数据。并面临与 PRIMARY INDEX 相关的问题。以下是详细信息。有人可以建议我做错了什么。谢谢。
控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use CouchbaseCluster;
class HomeController extends Controller {
public function index() {
// phpinfo();die;
//
$Cluster = New CouchbaseCluster ( 'http://127.0.0.1:8091' );
$Bucket = $Cluster->OpenBucket('beer-sample');
// Retrieve a document
Try {
$Result = $Bucket->Get('21St_amendment_brewery_cafe');
} Catch (Exception $E) {
Echo "CouchbaseException:" . $E->getMessage() . " \ N ";
}
$doc = Json_decode($Result->Value, True);
var_dump($doc);die;
}
}
收到以下错误消息:
CouchbaseException in CouchbaseBucket.class.php line 196:
The key does not exist on the server
然后我更改了我的控制器代码并再次运行。
控制器(更新):
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use CouchbaseCluster;
class HomeController extends Controller {
public function index() {
// phpinfo();die;
$query = 'SELECT * FROM `beer-sample` limit 2';
$res = \DB::connection()->bucket('beer-sample')->select($query);
var_dump($res);die;
}
}
然后我收到这个错误。
QueryException in Connection.php line 673:
No primary index on keyspace beer-sample. Use CREATE PRIMARY INDEX to create one. (SQL: SELECT * FROM `beer-sample` limit 2)
这两个错误似乎都与 (PRIMARY) Key 有关。因此,我尝试从我的控制器和 ./cbq 创建主键。但是案件失败了。以下是详细信息。
创建主键的控制器逻辑:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use CouchbaseCluster;
class HomeController extends Controller {
public function index() {
// phpinfo();die;
$query = 'CREATE PRIMARY INDEX `beer-sample-primary-index` ON `beer-sample` USING GSI WITH {"defer_build":true};';
$res = \DB::connection()->bucket('beer-sample')->select($query);
var_dump($res);die;
}
}
页面出现以下错误:
QueryException in Connection.php line 673:
GSI CreatePrimaryIndex() - cause: Fails to create index. There is no available index service that can process this request at this time. Index Service can be in bootstrap, recovery, or non-reachable. Please retry the operation at a later time. (SQL: CREATE PRIMARY INDEX `beer-sample-primary-index` ON `beer-sample` USING GSI WITH {"defer_build":true};)
来自./cbq 的查询也抛出类似的错误。
srturaka@srturaka-pc:/opt/couchbase/bin$ ./cbq
Couchbase query shell connected to http://localhost:8093/ . Type Ctrl-D to exit.
cbq> CREATE PRIMARY INDEX ON `beer-sample` USING GSI;
{
"requestID": "30239420-7dc2-4892-ba90-1ecf0474ba19",
"signature": null,
"results": [
],
"errors": [
{
"code": 5000,
"msg": "GSI CreatePrimaryIndex() - cause: Fails to create index. There is no available index service that can process this request at this time. Index Service can be in bootstrap, recovery, or non-reachable. Please retry the operation at a later time."
}
],
"status": "errors",
"metrics": {
"elapsedTime": "10.005267815s",
"executionTime": "10.005169082s",
"resultCount": 0,
"resultSize": 0,
"errorCount": 1
}
}
请帮助我了解如何为 couchbase 存储桶创建 PRIMARY KEY。让我知道是否需要更多信息。
编辑
服务器节点截图
我不确定这是否是正确的方法,但是在我将查询更改为 below.And 我能够执行 CRUD 操作后我的问题得到了解决。
$query = 'CREATE PRIMARY INDEX `beer-sample-primary-index` ON `beer-sample` USING View';
"VIEW 而不是 GSI;"
对我来说,带有“-”的存储桶名称在创建索引时不起作用。所以啤酒样本不起作用,但 beer_sample 有效。
我正在尝试使用 laravel 4.2 从 couchbase 存储桶中获取数据。并面临与 PRIMARY INDEX 相关的问题。以下是详细信息。有人可以建议我做错了什么。谢谢。
控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use CouchbaseCluster;
class HomeController extends Controller {
public function index() {
// phpinfo();die;
//
$Cluster = New CouchbaseCluster ( 'http://127.0.0.1:8091' );
$Bucket = $Cluster->OpenBucket('beer-sample');
// Retrieve a document
Try {
$Result = $Bucket->Get('21St_amendment_brewery_cafe');
} Catch (Exception $E) {
Echo "CouchbaseException:" . $E->getMessage() . " \ N ";
}
$doc = Json_decode($Result->Value, True);
var_dump($doc);die;
}
}
收到以下错误消息:
CouchbaseException in CouchbaseBucket.class.php line 196:
The key does not exist on the server
然后我更改了我的控制器代码并再次运行。
控制器(更新):
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use CouchbaseCluster;
class HomeController extends Controller {
public function index() {
// phpinfo();die;
$query = 'SELECT * FROM `beer-sample` limit 2';
$res = \DB::connection()->bucket('beer-sample')->select($query);
var_dump($res);die;
}
}
QueryException in Connection.php line 673:
No primary index on keyspace beer-sample. Use CREATE PRIMARY INDEX to create one. (SQL: SELECT * FROM `beer-sample` limit 2)
这两个错误似乎都与 (PRIMARY) Key 有关。因此,我尝试从我的控制器和 ./cbq 创建主键。但是案件失败了。以下是详细信息。
创建主键的控制器逻辑:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use CouchbaseCluster;
class HomeController extends Controller {
public function index() {
// phpinfo();die;
$query = 'CREATE PRIMARY INDEX `beer-sample-primary-index` ON `beer-sample` USING GSI WITH {"defer_build":true};';
$res = \DB::connection()->bucket('beer-sample')->select($query);
var_dump($res);die;
}
}
页面出现以下错误:
QueryException in Connection.php line 673:
GSI CreatePrimaryIndex() - cause: Fails to create index. There is no available index service that can process this request at this time. Index Service can be in bootstrap, recovery, or non-reachable. Please retry the operation at a later time. (SQL: CREATE PRIMARY INDEX `beer-sample-primary-index` ON `beer-sample` USING GSI WITH {"defer_build":true};)
来自./cbq 的查询也抛出类似的错误。
srturaka@srturaka-pc:/opt/couchbase/bin$ ./cbq
Couchbase query shell connected to http://localhost:8093/ . Type Ctrl-D to exit.
cbq> CREATE PRIMARY INDEX ON `beer-sample` USING GSI;
{
"requestID": "30239420-7dc2-4892-ba90-1ecf0474ba19",
"signature": null,
"results": [
],
"errors": [
{
"code": 5000,
"msg": "GSI CreatePrimaryIndex() - cause: Fails to create index. There is no available index service that can process this request at this time. Index Service can be in bootstrap, recovery, or non-reachable. Please retry the operation at a later time."
}
],
"status": "errors",
"metrics": {
"elapsedTime": "10.005267815s",
"executionTime": "10.005169082s",
"resultCount": 0,
"resultSize": 0,
"errorCount": 1
}
}
请帮助我了解如何为 couchbase 存储桶创建 PRIMARY KEY。让我知道是否需要更多信息。
编辑
服务器节点截图
我不确定这是否是正确的方法,但是在我将查询更改为 below.And 我能够执行 CRUD 操作后我的问题得到了解决。
$query = 'CREATE PRIMARY INDEX `beer-sample-primary-index` ON `beer-sample` USING View';
"VIEW 而不是 GSI;"
对我来说,带有“-”的存储桶名称在创建索引时不起作用。所以啤酒样本不起作用,但 beer_sample 有效。