2014-07-23 13 views
21

Po prostu gram z powłoką mongo i natknąłem się na Cannot use commands write mode, degrading to compatibility mode.Nie można użyć komendy trybu zapisu, Degrading do trybu kompatybilności

I podłączone do zdalnego serwera Mongo (mongolab) i starał się wstawić nowy rekord do odbioru przez mojego prostego skryptu:

// script.js 
db = connect(host + ":" + port +"/" + dbName); 
db.auth(username, password); 

db.test2.insert({ item: "card", qty: 15 }); 

uruchomić skrypt mongo script.js i otrzymała:

MongoDB shell version: 2.6.3 
connecting to: test 
connecting to: my.mongolab.com:port/DBname 
Cannot use commands write mode, degrading to compatibility mode 

Co jest źle? Dodatkowo, gdy wykonałem podobne zapytanie po połączeniu za pomocą mongo my.mongolab.com:port/DBname -u <dbuser> -p <dbpassword>, wszystko jest w porządku.

+5

Nawiązujesz połączenie z instancją MongoDB, która jest niższa niż wersja 2.6. Prawdopodobnie nie przyniesie to ludziom większych korzyści w przyszłości, ponieważ z czasem zniknie. To tylko ostrzeżenie i "nie" wpływa na operacje. –

+0

@NeilLunn dziękuję. W rzeczywistości zapis został wstawiony. Nie zauważyłem tego, przepraszam. Ale co ze środowiskiem produkcyjnym, czy mogę zignorować to ostrzeżenie? – NHG

+0

@NHG Zawsze możesz pobrać odpowiednią wersję (zgodnie z 'db.version()') ze strony http://www.mongodb.org/, np. https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.7.tgz –

Odpowiedz

26

Używasz powłoki, która jest nowsza niż serwer, z którym komunikujesz.

Można sprawdzić wersję serwera z powłoki poprzez db.version() - sprawdzić wersję powłoki użyć version()

Począwszy 2.6 serwer mongod zaczął używać nowych poleceń zapisu, które są inne niż poprzednio wykorzystują insert/update/usuń kod operacji (wszystko to opisane jest w MongoDB Wire Protocol).

To jest nieszkodliwe ostrzeżenie "informacyjne". Dobrym pomysłem jest użycie tej samej powłoki powłoki co serwer, aby uniknąć zastanawiania się nad takimi rzeczami.

Powiązane problemy