2016-05-09 16 views
1

Ich versuche, Daten von Couchbase Eimer mit Laravel 4.2 zu bekommen. Und mit dem Problem in Bezug auf PRIMARY INDEX konfrontiert. Unten sind die Details. Kann mir jemand bitte vorschlagen wo ich falsch mache. Vielen Dank.Kann PRIMAREINDEX für Couchbase-Bucket nicht erstellen. auf UBUNTU 14.04

Controller:

<?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; 
 
    } 
 

 
}

immer unten Fehlermeldung:

CouchbaseException in CouchbaseBucket.class.php line 196: 
 
The key does not exist on the server

Dann änderte ich meine Controller-Code und r ein es wieder.

Controller (Aktualisiert):

<?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; 
 

 
    } 
 

 
}
Dann erhalte ich diesen Fehler.

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)

Es scheint, sind beide Fehler (primär) Key bezogen. Also habe ich versucht, Primärschlüssel von meinem Controller und ./cbq zu erstellen. Aber Fälle scheitern. Unten sind die Details.

Controller-Logik Primär-Schlüssel zu erstellen:

<?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;  
 
    } 
 

 
}

Seite unten Fehler wirft:

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};)

Abfrage f rom ./cbq warf auch ähnlichen Fehler.

[email protected]:/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 
 
    } 
 
}

Bitte helfen Sie mir, wie Primärschlüssel für Couchbase Eimer zu erstellen. Lassen Sie mich wissen, wenn mehr Informationen benötigt werden.

EDIT

enter image description here

Server Node Screenshots

enter image description here

enter image description here

enter image description here

+0

Können Sie in der Registerkarte Knoten der Webkonsole einchecken, dass Sie mindestens einen Knoten mit dem Dienst 'index' haben. bei einer typischen dev-lokalen installation hat man einen einzigen node mit den 3 services: 'data',' index' und 'query' ... auch welche couchbase server-version benutzt du? –

+0

Ich habe Server-Knoten Screenshots in meiner Frage hinzugefügt. Ich bin mir nicht sicher, wie ich prüfen kann, ob der Index-Dienst verfügbar ist. Können Sie sehen, ob Sie von Screenshots etwas Ahnung haben? Ich benutze Couchbase Server 4.0.0. –

+0

Der Index scheint aktiviert zu sein, wie im zweiten Screenshot rechts neben dem grünen Zeichen "oben" angezeigt. Aber der Index-Service scheint zu scheitern ... Vielleicht können Sie jemanden von der Unterstützung bekommen, der Ihnen hilft, zu diagnostizieren, wenn Sie in den Couchbase Foren posten –

Antwort

3

Ich bin mir nicht sicher, ob dies ein richtiger Weg ist, aber mein Problem wurde gelöst, nachdem ich meine Abfrage unten geändert habe. Und ich kann CRUD-Operationen durchführen.

$ query = 'PRIMÄRINDEX ERSTELLEN beer-sample-primary-index ON beer-sample USING View';

"VIEW statt GSI;"

0

Für mich Eimer Namen mit '-' nicht funktioniert, während Index erstellen. Bierprobe funktioniert also nicht, aber beer_sample funktioniert.

+0

Namen mit '-' müssen mit Backticks, d. H. "Bierprobe", zitiert werden – Canicious

Verwandte Themen