2016-01-22 240 views
2

部署腳本創建和配置數據庫,集合等。該腳本包含在開始之前刪除數據庫的代碼,以便測試它們可以正常進行。刪除數據庫後重新添加它:刪除和重新創建ArangoDB數據庫保留集合

var graphmodule = require("org/arangodb/general-graph"); 
var graphList = graphmodule._list(); 
var dbList = db._listDatabases(); 

for (var j = 0; j < dbList.length; j++) { 
    if (dbList[j] == 'myapp') 
     db._dropDatabase('myapp'); 
} 

db._createDatabase('myapp'); 
db._useDatabase('myapp'); 

db._create('appcoll'); // Collection already exists error occurs here 

先前已加入到MYDB留在MYDB的集合,但它們是空的。這對於我的特殊用例來說並不是一個問題,因爲集合是空的,而且我已經計劃重新構建它們,但我寧願有一個乾淨的平臺來進行測試,這種行爲看起來很奇怪。

我試過關閉shell並重新啓動drop和add之間的數據庫,但是沒有解決問題。

有沒有辦法乾淨地刪除和重新添加數據庫?

+0

答覆回答你的問題?如果是的話,你能標記接受的答案嗎?如果沒有,缺少什麼? – dothebart

+0

它正在使用正確的數據庫。該腳本還檢查並刪除圖表。這似乎是多餘的,因爲整個數據庫都被刪除了,但是當我將該塊移到db._create('appcoll')行之前時,問題就解決了。 appcoll集合在圖中使用。數據庫被刪除後是否存在對圖集合的殘留引用? – gph

+0

如果您創建一個[命名圖](https://docs.arangodb.com/Glossary/index.html#named-graphs),其管理數據將保存在系統集合「_graphs」中。您應該[通過圖表管理功能]刪除圖表(https://docs.arangodb.com/GeneralGraphs/Management.html#remove-a-graph)。與圖形相關的另一件事是使用瀏覽器存儲來記住圖形設置的UI。 – dothebart

回答

0

ArangoDB存儲關於managed graphs的其他信息;

因此與命名圖工作時,你應該使用the graph management functions刪除圖表,使舒爾沒有保留在系統中:

var graph_module = require("org/arangodb/general-graph"); 
graph_module._drop("social", true); 

在管理界面中存儲您的視圖首選項的當前實現圖形瀏覽器的(就像應該成爲圖形標籤的屬性一樣)在您的瀏覽器本地存儲中,因此這些功能無法實現。

1

當調用db._dropDatabase()時應撤銷集合。 但是,如果您直接運行db._dropDatabase('mydb');,然後再運行db._createDatabase('mydb');,然後通過db._collections()檢索集合列表,這將顯示當前數據庫的集合(如果能夠運行命令,可能是_system數據庫)?

這意味着您可能一直在查看_system數據庫中的集合,除非您通過db._useDatabase(name);更改數據庫。這是否解釋了它?

+0

我從腳本中添加了額外的代碼,以顯示我試圖切換數據庫的位置。儘管我確實看到了你的觀點,但可能存在一個更微妙的問題。我會仔細觀察一下,並儘快更新回來。 – gph

相關問題