2016-11-10 4 views

答えて

1

は、あなたがどうなるショーのDBSで示したされているデータベースを示して取り付け注意

よろしくため

感謝をコマンドで参照してください

use [db]; 
db.dropDatabase(); 

何がuseコマンドは実際にデータベースオブジェクトをdbに配置することです。 UTF-8データベース名では、useコマンドを実行することができません。 dbオブジェクトを取得する別の方法として、db.getSisterDB([db name])を実行してからドロップすることができます。

var db2 = db.getSisterDB(emptyDbs[0].name); 
db2.dropDatabase(); 

同じdbオブジェクトを返す別の方法getSiblingDBがあります:
これはトリックを行う必要があります。彼らの違いが何であるか疑問に思っているならば、違いはありません。

replset:PRIMARY> db.getSiblingDB 
function (name) { 
    return this.getMongo().getDB(name); 
} 
replset:PRIMARY> db.getSisterDB 
function (name) { 
    return this.getMongo().getDB(name); 
} 

EDIT: 上記のソリューションは、あなたのために動作しませんよう。あなたが試みることができる最後のことは、dbpathに行き、UTF-8文字で指定されたファイルを見つけて削除することです。あなたはおそらく、その名前でファイルを提出しません。なぜなら、db名の後に(空の)名前が続く場合、それは通常dbが削除されたことを意味するからです。その場合は、インスタンスを再起動するだけで問題が解決されます。
これを行う前にデータベースを停止することを忘れないでください。何かをする前にバックアップしてください。

この方法は、MMAPv1ストレージエンジンでのみ機能します。

+0

コードでも説明してください。 –

+0

私はコードがかなり簡単だと思います。しかし、私はいくつかの説明を追加します。 – yaoxing

+0

おはよう 私はこの方法で試しましたが、うまくいきませんでした。 dropDatabase()コマンドは、データベースが削除されたことを示していますが、show dbsを実行すると、まだそこにあります。 > emptyDbs [0] > emptyDbs [1] .nameの.NAME >変数のDB2 = db.getSisterDB(emptyDbs [0] .nameの)。 > var db3 = db.getSisterDB(emptyDbs [1] .name); > db2.dropDatabase() {"dropped": " "、ok ":1} > db3.dropDatabase() {" dropped ":" "、" ok ":1} > show dbs <その他のデータベース> (空) (空) –

関連する問題

 関連する問題