全局初始化失败:BadValue logpath需要一个带有Windows服务的绝对文件路径

时间:2015-09-17 04:46:50

标签: mongodb mongoose

我正在尝试使用配置文件安装mongod时不断收到此错误。所以,我正在关于mongodb的Pluralsight上看这个教程。这个人的编程环境尽可能顺利。但是,我遇到了几个问题。首先,我正在尝试设置不同的logpath和数据库路径。这是conf文件的基本布局

dbpath=/Pluralsight/db
logpath=/Pluralsight/mongod.conf
verbose=vvvvv

我的语法:

c:\Program Files\MongoDB\Server\3.0\bin\mongod -f c:\Pluralsight\mongod.conf
//Trying to run mongod using a configuration file

当我按回车键时,我应该收到一条消息,说明所有内容都被定向到这个新的日志文件和一个新的数据库。我没有得到任何消息。但是,这并没有阻止它创建包含预期文件夹中的信息的日志文件。现在,我继续安装mongod作为服务。这是我输入

的时候
   C:\Program Files\MongoDB\Server\3.0\bin\mongod -f c:\Pluralsight\mongod.conf --install
    //using the configuration file to install mongod as a service

我收到错误:

  

全局初始化失败:BadValue logpath需要绝对值   Windows服务的文件路径

我不知道如何解决这个问题!

10 个答案:

答案 0 :(得分:24)

我遇到了与MongoDB指令相同的问题,因为一旦导航到MongoDB bin,我就在CLI中为我的mongo.cfg使用了相对路径:

mongod.exe --config mongod.cfg --install

相反,我需要指定配置文件的绝对路径:

mongod.exe --config "C:\Program Files\MongoDB\Server\3.0\bin\mongod.cfg" --install

答案 1 :(得分:4)

错误消息说明了问题。您的MongoDB配置文件具有相对路径,而不是绝对路径。

尝试按如下方式设置日志路径

logpath=c:/Pluralsight/mongod.log

答案 2 :(得分:3)

我遇到了同样的问题。我读完这篇文档后,解决了。

https://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows

  1. 打开管理员命令提示符。
  2. 按Win键,键入cmd.exe,然后按Ctrl + Shift + Enter以管理员身份运行命令提示符。

    从管理员命令提示符执行其余步骤。

    1. 创建目录。
    2. 为您的数据库和日志文件创建目录:

      mkdir c:\data\db
      mkdir c:\data\log
      
      1. 创建配置文件。
      2. 创建配置文件。该文件必须设置systemLog.path。根据需要包括其他配置选项。

        例如,在C:\ mongodb \ mongod.cfg创建一个文件,该文件指定systemLog.path和storage.dbPath:

        systemLog:
            destination: file
            path: c:\data\log\mongod.log
        storage:
            dbPath: c:\data\db
        
        1. 安装MongoDB服务。
        2. 重要

          使用“Administrative Privileges”命令在“命令提示符”中运行以下所有命令。

          通过使用--install选项启动mongod.exe并使用-config选项指定以前创建的配置文件来安装MongoDB服务。

          " C:\ mongodb的\ BIN \ mongod.exe" --config" C:\ mongodb \ mongod.cfg" - 安装 要使用备用dbpath,请在配置文件中指定路径(例如C:\ mongodb \ mongod.cfg),或在命令行中使用--dbpath选项指定路径。

          如果需要,您可以为mongod.exe或mongos.exe的多个实例安装服务。使用唯一的--serviceName和--serviceDisplayName安装每个服务。仅当存在足够的系统资源且系统设计需要时才使用多个实例。

          1. 启动MongoDB服务。

            net start MongoDB

          2. 根据需要停止或删除MongoDB服务。

          3. 要停止MongoDB服务,请使用以下命令:

            net stop MongoDB
            

            要删除MongoDB服务,请使用以下命令:

            "C:\mongodb\bin\mongod.exe" --remove
            

答案 3 :(得分:1)

echo logpath = C:/ myProgra/MongoDB/log/mongo.log> “C:\ MyProgram \ MongoDB的\ mongod.cfg” C:\ myprogram \ MongoDB \ Server \ 3.0 \ bin \ mongod.exe --config“C:\ myProgram \ MongoDB \ mongod.cfg”--install

答案 4 :(得分:1)

我遇到了同样的问题。但我可以通过更新路径解决它,如下所示。我可以看到问题是文件路径中的正斜杠和反斜杠。

mongod.conf(而不是给相对路径提供绝对路径,并确保你有“/”而不是“\”)

class Gui {}

interface ComponentRenderer<T extends GuiComponent<T>> {
    public void draw(T component);
}

// T is the self-type. Subclasses will set it to their own type. In this way this class
// can refer to the type of its subclasses.
abstract class GuiComponent<T extends GuiComponent<T>> extends Gui {
    private ComponentRenderer<T> componentRenderer;

    public void draw() {
        this.componentRenderer.draw(thisSub());
    }

    public void setComponentRenderer(ComponentRenderer<T> r) {}

    // This method is needed for the superclass to be able to use 'this'
    // with a subclass type. Sub-classes must override it to return 'this'
    public abstract T thisSub();

    //and a setter and getter for the ComponentRenderer
}

// Here the self-type parameter is set
class GuiButton extends GuiComponent<GuiButton> {
    public GuiButton(/* ... */) {
        //...
        this.setComponentRenderer(new FlatButtonRenderer());
    }

    class FlatButtonRenderer implements ComponentRenderer<GuiButton> {
        @Override
        public void draw(final GuiButton component) {
            //...
        }
    }

    @Override
    public GuiButton thisSub() {
        return this;
    }
}

然后转到命令提示符:

dbpath= C:/mongolearning/db
logpath= C:/mongolearning/mongo-server.log
verbose=vvvvv

然后

C:\Program Files\MongoDB\Server\3.2\bin>mongod -f "C:\Program Files\MongoDB\Server\3.2\bin\mogod.conf" --install

它开始了。

MongoDB服务正在启动。 MongoDB服务已成功启动。

答案 5 :(得分:0)

感谢你们的建议。我刚刚在他们的网站上使用MongoDB的说明,在windows中安装mongod作为服务,而不是Pluralsight教程,并且进展顺利。

答案 6 :(得分:0)

配置文件中不能有引号。 这样的方式是错误的:

div

缺点是正确的:

transcript

答案 7 :(得分:0)

在配置文件中使用绝对路径而不是dbpath&amp;的相对路径。 logpath如下所示,并运行命令来安装MongoDB服务。

dbpath = c:/Pluralsight/db (instead of /Pluralsight/db)  
logpath = c:/Pluralsight/mongo-server.log (instead of Pluralsight/mongo-server.log)  
verbose = vvvvv

安装MongoDB服务的命令如下:

mongod -config "C:\Pluralsight\mongod.conf" --install

答案 8 :(得分:0)

我得到了同样的错误

   **Failed Global Initialization: BadValue logpath requires an absolute file path with windows services**

因为我在mongo.config中指定了日志路径文件夹,但我必须指定一个日志文件

  dbpath=C:\Program Files\MongoDB\Server\3.4\data\db
  logpath=C:\Program Files\MongoDB\Server\3.4\log
  diaglog=3

我将日志文件更改为

 dbpath=C:\Program Files\MongoDB\Server\3.4\data\db
 logpath=C:\Program Files\MongoDB\Server\3.4\log\mongo.log
 diaglog=3

之后,这个命令解决了我的问题。希望这对你有用。

 mongod.exe --config "C:\Program Files\MongoDB\Server\3.4\mongo.config" --install

然后终于

net start MongoDB

答案 9 :(得分:0)

通过直接从命令行指定logpathdbpath标志,我在安装MongoDB服务时遇到了同样的问题。

mongod --install --logpath='<my log path>' --dbpath='<my db path>'

原来,logpathdbpath值必须用双引号括起来( ie&#34;&#34; )而不是单个qoutes,或者如果路径在绝对目录路径中没有任何空格,则根本没有引号。

所以以下是我的诀窍:

mongod --install --logpath="<my log path>" --dbpath="<my db path>"

注意路径包含在双qoutes内。