Не в состоянии запустить Mongodb на Ubuntu

В Objective-C важно различать объекты и примитивные типы.

Объект всегда сохраняется как указатель, который является местоположением объекта в памяти. Указатель - это просто число. С помощью NSLog вы можете использовать %p, чтобы увидеть это значение. Вы также можете отобразить его в отладчике, например: print myObject. Указатель отображается как шестнадцатеричное число с префиксом 0x. nil по существу является нулевым (0x0000). Когда вы выделяете какой-либо объект, вы получите указатель, который не равен нулю. Когда вы назначаете объект переменной, вы просто копируете адрес памяти, а не дублируете объект. С помощью NSLog вы можете использовать %@ для печати объекта description. В отладчике, например: print-object myObject.

Примитивные типы, такие как NSInteger, не являются объектами. Вместо того чтобы хранить указатель, обычно вы просто сохраняете значение. Когда вы назначаете переменную NSInteger, вы делаете копию значения. Вы можете увидеть значение в отладчике с помощью print. Или вот так: NSLog("%ld", (long)currentRow). Когда вы назначаете примитив, вы копируете его значение. Не используйте %@ или print-object с примитивами - они ожидают объекты.

(я говорю «обычно вы просто сохраняете значение»), потому что вы также можете указывать указатели на примитивные типы. как и вам, но это необязательно.)

[self currentRow] возвращает 0, точно так же, как вы его установили. (Кроме того, поскольку Objective-C гарантирует инициализацию переменных экземпляра, он вернет 0, даже если вы не не установили его.)

Проблема в том, что вы ожидаете указатель на объект. Как вы исправите свой код, зависит от того, как вы его используете:

  • Если вы используете print-object currentRow, измените его на print currentRow.
  • re, используя NSLog("%@", currentRow), измените его на NSLog(%"ld", (long)currentRow).
  • Если вы используете currentRow в другом месте, где требуется объект, измените вашу переменную экземпляра и типы свойств на NSNumber *, тип объекта. Установите его с помощью [self setCurrentRow:[NSNumber numberWithInt:0]].
1
задан Adesh Kumar 25 February 2019 в 13:25
поделиться

3 ответа

В соответствии с сообщением об ошибке пользователь, пытающийся запустить процесс mongod, не имеет доступа для записи в папку / data / db.

Выполните следующую команду, чтобы позволить пользователю записать в папку / data / db

sudo chown -R $USER:$USER /data/db

или создать новую папку с разрешениями текущих пользователей и запустить mongod с параметром --dbpath

[111 ]
0
ответ дан Mani 25 February 2019 в 13:25
поделиться

Попробуйте это. Это может помочь.

sudo chmod 777 /data/db
0
ответ дан PALLAMOLLA SAI 25 February 2019 в 13:25
поделиться

Если вы столкнулись с этой проблемой, это означает, что вы пытаетесь подключиться к монго без запуска сервера на локальном компьютере, что вызывает эту проблему

enter image description here

Некоторые системы не запускают службу mongo автоматически при запуске машины. Поэтому вам нужно запустить его вручную.

Запустите эту команду, чтобы запускать сервис каждый раз, когда вы запускаете компьютер или когда вы хотите использовать mongo

sudo service mongod start
// or 
sudo systemctl start mongod

Выполнить sudo service mongod status и посмотреть, что он вернет. Если он остановлен, запустите sudo service mongod start, чтобы запустить mongodb, и попробуйте подключиться к нему.

Если sudo service mongod start выдает ошибку, то

Создайте файл /lib/systemd/system/mongod.service со следующим содержимым:

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target

Если ошибка не исчезла, сообщите об ошибке консоли. В начале мы можем помочь вам лучше.

0
ответ дан Ashok 25 February 2019 в 13:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: