Ошибка запуска скрипта MongoDB на OpenShift Gear
Я написал сценарий заполнения базы данных (на JavaScript), чтобы легко запускать его на своем компьютере и на сервере. Я хочу запустить его из командной строки, так что все, что мне нужно сделать, это отправить его на сервер / механизм и выполнить его. Скрипт отлично работает на моем локальном компьютере, но когда я пытаюсь запустить его на оборудовании OpenShift, он выдает следующую ошибку:
MongoDB shell version: 2.4.9
connecting to: 127.XX.XXX.X:27017/admin
Sat Sep 12 12:20:25.979 count failed: { "ok" : 0, "errmsg" : "unauthorized" }
at src/mongo/shell/query.js:180
failed to load: ./Create.js
Я пытаюсь выполнить команду:
[xxxxxx-xxxxxx.rhcloud.com scripts]\> mongo ./Create.js
Я включил внутренности моего файла. Я оставил все материалы для создания документов. Просто знайте, что я добавил документ в массив.
// Switch to the DB we want
var connection;
try {
// Try to connect to local first
connection = new Mongo();
}
catch(err) {
// If error, connect to OpenShift server
connection = new Mongo('127.XX.XXX.X:27017');
}
db = connection.getDB('xxxxxxx');
// Create array to store documents
var newDocs = [];
...
// Documents are added to newDocs here
...
// If any new documents exist, insert them
if(newDocs.length) {
var bulk = db.xxxxxxx.initializeUnorderedBulkOp();
newDocs.forEach(function (doc) {
bulk.insert(doc);
});
bulk.execute();
print('NEW DOCS INSERTED');
}
else {
print('NO NEW DOCS');
}
2 ответа
Я использовал db.auth('username', 'password');
аутентифицировать. В конечном итоге я добавил переменную в скрипт, чтобы отслеживать, выполняю ли я скрипт локально или на сервере. Затем я использовал переменную для пароля, чтобы у меня не было пароля для БД, просто висевшего в скрипте. Я передаю пароль из командной строки с --eval
вариант. Вот измененная глава скрипта:
// Switch to the DB we want
var connection;
var isLocal = true;
try {
// Try to connect to local first
connection = new Mongo();
}
catch(err) {
// If error, connect to OpenShift server
connection = new Mongo('127.XX.XXX.X:27017');
isLocal = false;
}
db = connection.getDB('xxxxxxx');
if(!isLocal) {
// If on server, authenticate
db.auth('username', password);
}
// Create array to store documents
var newDocs = [];
Затем, чтобы запустить скрипт из командной строки на сервере, я использую следующее:
mongo --eval "var password = 'xxxxxxx';" Create.js
Похоже, вам не хватает вашего имени пользователя / пароля для подключения к вашей базе данных mongodb в openshift? посмотрите на ошибку, которую вы получили "несанкционированный..."