2014-01-13 2 views
0

У меня возникла проблема с открытием базы данных OrientDB (orientdb-community-1.6.3).OrientDB, OrientDB-PHP и Restler - Не удается открыть хранилище

Я могу получить доступ к серверу с помощью $db = new OrientDB(...).

Я могу связаться с моим администратором, используя $dbConnected = $db->connect(...).

Но открыв свою базу данных, или проверки его существования дают мне ошибку: com.orientechnologies.orient.core.exception.OStorageException: Cannot open the storage 'mydb' because it does not exist in path: /Users/kent/dev/Database/releases/orientdb-community-1.6.3/databases//../databases/mydb

Подробнее:

С консоли OrientDB, работает отлично:

orientdb> connect plocal:../databases/mydb admin admin 
Connecting to database [plocal:../databases/mydb] with user 'admin'...OK 
orientDB> 

PHP Фрагмент кода :

$dbInfo = array (
    'datasource' => 'Database/OrientDB', 
    'persistent' => true, 
    'host' => 'localhost', 
    'port' => 2424, 
    'timeout' => 60, 
    'serverUsername' => 'admin', 
    'serverPassword' => 'admin', 
    'database' => 'plocal:../databases/mydb', 
    'databaseUsername' => 'admin', 
    'databasePassword' => 'admin' 
); 

// New OrientDB instance 
try { 
    $db = new OrientDB ($dbInfo ['host'], $dbInfo ['port'], $dbInfo ['timeout']); 
    error_log ("dbUtil.php:dbOpen: new Orient:db:" . print_r ($db, true)); 
} catch (Exception $e) { 
    // Report error connecting to server 
    $exception = 404; 
    $message .= 'Database server ' . $dbInfo ['host'] . ':' . $dbInfo ['port'] . ' did not respond. ' . $e->getMessage(); 
} 

if ($db) { 
    // Made the connection to the server, connect as user $dbInfo ['serverUsername'] 
    try { 
     $dbConnected = $db->connect ($dbInfo ['serverUsername'], $dbInfo ['serverPassword']); 
     error_log ("dbUtil.php:dbOpen:dbConnected:" . $dbConnected); 
    } catch (OrientDBException $e) { 
     // Report error on $db->connect 
     $exception = 400; 
     $message .= 'Unable to connect to ' . $dbInfo ['datasource'] . ' as user ' . $dbInfo ['serverUsername'] . '. ' . $e->getMessage(); 
    } 

    // Open the database 
    if ($dbConnected) { 
     try { 
      $dbExists = $db->DBExists ($dbInfo ['database']); 
      error_log ("dbUtil.php:dbOpen(" . $dbInfo ['database'] . "):dbExists:" . $dbExists); 
      if (! $dbExists) { 
       // Report database does not exist 
       $exception = 404; 
       $message .= "Database " . $dbInfo ['database'] . ' does not exist.'; 
      } 
     } catch (OrientDBException $e) { 
      // Report err on $db->DBExists 
      $exception = 404; 
      $message .= "Error checking the existence of database " . $dbInfo ['database'] . ". " . $e->getMessage(); 
     } 
     if ($dbExists) { 
      try { 
       $dbClusters = $db->DBOpen ($dbInfo ['database'], $dbInfo ['databaseUsername'], $dbInfo ['databasePassword']); 
       error_log ("dbUtil.php:dbOpen:DBOpen:dbClusters:" . print_r ($dbClusters, true)); 
      } catch (OrientDBException $e) { 
       // Report error opening database 
       $exception = 400; 
       $message .= "Error opening database " . $dbInfo ['datasource'] . ' as user ' . $dbInfo ['databaseUsername'] . '. ' . $e->getMessage(); 
      } 
     } 
    } 
} 

// Any problems? 
if ($exception != 200) { 
    throw new RestException ($exception, $message); 
} 

Журнал ошибок:

[13-Jan-2014 04:33:22 UTC] dbUtil.php:dbOpen: new Orient:db:OrientDB Object 
(
[host:OrientDB:private] => localhost 
[port:OrientDB:private] => 2424 
[socket] => OrientDBSocket Object 
    (
     [socket:OrientDBSocket:private] => Resource id #2 
     [bufferLen:OrientDBSocket:private] => 16384 
     [debug] => 
    ) 

[debug:OrientDB:private] => 
[clientVersion] => 15 
[protocolVersion] => 
[connected:protected] => 
[DBOpen:protected] => 
[active:protected] => 1 
[sessionIDServer:OrientDB:private] => 
[sessionIDDB:OrientDB:private] => 
[cachedRecords] => Array 
    (
    ) 

) 

[13-Jan-2014 04:33:22 UTC] dbUtil.php:dbOpen:dbConnected:1 
[13-Jan-2014 04:33:22 UTC] dbUtil.php:dbOpen(plocal:../databases/mydb):dbExists: 

Ls на пути в сообщении об ошибке:

$ ls -la /Users/kent/dev/Database/releases/orientdb-community-1.6.3/databases//../databases/mydb 
total 5984 
drwxr-xr-x 58 kent staff 1972 Jan 12 20:47 . 
drwxr-xr-x 4 kent staff  136 Jan 12 16:43 .. 
-rw-r--r-- 1 kent staff 66560 Jan 12 20:47 ORole.name.sbt 
-rw-r--r-- 1 kent staff 66560 Jan 12 20:47 OUser.name.sbt 
.. 

Любые идеи?

Спасибо

** Обновлено 2014-01-19 ** Добавлено УТОНЧЕННАЯ протоколирование на сервер.

2014-01-19 19:06:11:597 FINE [OMMapManagerNew] flushing pages in memory... [OMMapManagerNew] 
2014-01-19 19:06:11:597 FINE [OMMapManagerNew] flushed 0/0 blocks [OMMapManagerNew] 
2014-01-19 19:06:13:731 CONF Remote client connected from: OClientConnection [id=34, source=?, since=1390187173731] [OClientConnectionManager] 
2014-01-19 19:06:13:733 CONF Remote client connected from: OClientConnection [id=35, source=/127.0.0.1:60842, since=1390187173732] [OClientConnectionManager] 
2014-01-19 19:06:13:736 FINE Disconnecting connection OClientConnection [id=35, source=/127.0.0.1:60842, since=1390187173732]... [OClientConnectionManager] 
2014-01-19 19:06:13:736 FINE Disconnected connection OClientConnection [id=35, source=/127.0.0.1:60842, since=1390187173732] found 1 channels [OClientConnectionManager] 
2014-01-19 19:06:14:080 FINE [OClientConnectionManager] found and removed pending closed channel 34 (Socket[addr=/127.0.0.1,port=60842,localport=2424]) [OClientConnectionManager$1] 
2014-01-19 19:06:41:597 FINE [OMMapManagerNew] flushing pages in memory... [OMMapManagerNew] 
2014-01-19 19:06:41:597 FINE [OMMapManagerNew] flushed 0/0 blocks [OMMapManagerNew] 

Добавлено error_log ("dbUtil.php.dbOpen:list of databases:" . print_r($db->DBList(), true)); после подключения к серверу:

[20-Jan-2014 03:06:13 UTC] dbUtil.php.dbOpen:list of databases:Array 
(
    [docitt] => plocal:/Users/kent/dev/Database/releases/orientdb-community-1.6.3/databases/docitt 
    [GratefulDeadConcerts] => plocal:/Users/kent/dev/Database/releases/orientdb-community-1.6.3/databases/GratefulDeadConcerts 
) 

Затем используется plocal:/Users/kent/dev/Database/releases/orientdb-community-1.6.3/databases/docitt в качестве имени базы данных. Те же ошибки: Database plocal:/Users/kent/dev/Database/releases/orientdb-community-1.6.3/databases/docitt does not exist.

+0

Ошибка говорит, что никакая база данных не может быть найдена с использованием предоставленного пути. Возможно, это связано с 'базами данных //../ баз данных'. папка 'databases', переместив одну папку назад, а затем снова войду в нее. Попробуйте использовать только' mydb'. –

+0

@ SverriM.Olsen Я пробовал: 'mydb',' databases/mydb', 'local: mydb ',' plocal: ../ databases/mydb'. Они также не будут работать в console.sh. 'plocal: ../ databases/mydb' был единственным, кто работал в консоли. – Kent

ответ

1

В базе данных я пытался открыть plocal:../databases/mydb был тип базы данных plocal и (текущая по умолчанию для orientdb-сообщества-1.6.3). OrientDB-PHP еще не поддерживает graph Тип базы данных только document :(

Смежные вопросы