错误:数据库名称不能包含字符“

时间:2015-08-03 17:43:44

标签: mongodb meteor

之前的注释:这已更新,并且存在名称为“错误:数据库名称不能包含字符”的问题。但这是一个空格或空字符,一个点!我不确定这是否可能是一个重大的区别,但除了那个问题之外,那里的答案对我没有帮助。另外,我使用Windows 7(32位(对于mongodb来说不是最好的东西,我知道)而且我的描述更加详细。)

要点:我想在几天之后第一次再次启动流星(之前一切正常)并且突然出现了这个错误:

W20150803-18:44:47.168(2)? (STDERR) C:\Users\Laptop\AppData\Local\.meteor\packag
es\meteor-tool\1.1.3\mt-os.windows.x86_32\dev_bundle\server-lib\node_modules\fib
ers\future.js:245
W20150803-18:44:47.168(2)? (STDERR)
throw(ex);
W20150803-18:44:47.168(2)? (STDERR)
      ^
W20150803-18:44:47.168(2)? (STDERR) Error: database names cannot contain the cha
racter ' '
W20150803-18:44:47.169(2)? (STDERR)     at validateDatabaseName (C:\Users\Laptop
\AppData\Local\.meteor\packages\mongo\1.1.0\npm\node_modules\mongodb\lib\mongodb
\db.js:235:59)
W20150803-18:44:47.169(2)? (STDERR)     at new Db (C:\Users\Laptop\AppData\Local
\.meteor\packages\mongo\1.1.0\npm\node_modules\mongodb\lib\mongodb\db.js:97:3)
W20150803-18:44:47.169(2)? (STDERR)     at connectFunction (C:\Users\Laptop\AppD
ata\Local\.meteor\packages\mongo\1.1.0\npm\node_modules\mongodb\lib\mongodb\mong
o_client.js:275:29)
W20150803-18:44:47.169(2)? (STDERR)     at Function.MongoClient.connect (C:\User
s\Laptop\AppData\Local\.meteor\packages\mongo\1.1.0\npm\node_modules\mongodb\lib
\mongodb\mongo_client.js:345:5)
W20150803-18:44:47.170(2)? (STDERR)     at Function.Db.connect (C:\Users\Laptop\
AppData\Local\.meteor\packages\mongo\1.1.0\npm\node_modules\mongodb\lib\mongodb\
db.js:2094:23)
W20150803-18:44:47.170(2)? (STDERR)     at new MongoConnection (packages/mongo/m
ongo_driver.js:173:1)
W20150803-18:44:47.170(2)? (STDERR)     at new MongoInternals.RemoteCollectionDr
iver (packages/mongo/remote_collection_driver.js:4:1)...
W20150803-18:44:47.171(2)? (STDERR)     at Object.<anonymous> (packages/mongo/re
mote_collection_driver.js:38:1)
W20150803-18:44:47.171(2)? (STDERR)     at Object.defaultRemoteCollectionDriver
(packages/underscore/underscore.js:750:1)
W20150803-18:44:47.171(2)? (STDERR)     at new Mongo.Collection (packages/mongo/
collection.js:98:1)

在此期间我没有创建任何数据库时数据库名称为空,从那时起我就完全处于黑暗状态。 我认为这与我试图运行的一个特定项目有关(该项目已经设置了很多问题,但最终它仍然有效),但我没有改变任何东西,我也没有改变任何其他项目。让我更困惑的是,我在我试图启动的每个其他项目上都遇到了同样的错误。

过了一会儿,我重新启动了,项目再次启动,但是所有这一切开始的实际项目再次失败,这次显示了一个旧的已知错误:

Unexpected mongo exit code 14. Restarting.
Unexpected mongo exit code 100. Restarting.
Unexpected mongo exit code 100. Restarting.
Can't start Mongo server.
MongoDB had an unspecified uncaught exception.
This can be caused by MongoDB being unable to write to a local database.
Check that you have permissions to write to .meteor/local. MongoDB does
not support filesystems like NFS that do not allow file locking.

最初的解决方案是在CMD中运行:

"c:\mongodb\bin\mongod.exe" --port 27017 --dbpath "C:\Users\Laptop\TheDatabaseFolder\rs2" --replSet rs2 --smallfiles --setParameter failIndexKeyTooLong=false //note: this had to be done due to 32 bit issue

rs.initiate() 

尽管CMD表明允许写入,但仍然会出现相同的“无法写入”错误。最后我这样做了:

set MONGO_URL=mongodb://localhost:27017/meteor 

然后我用特定的配置文件解冻了meteor(由于包无法加载)

meteor --settings ../config/development/settings.json.dist

数据库名称的主要问题是再次包含空格或空字符。

一般来说:摆脱这个问题最有效的方法是什么?为什么这会突然潜入每个项目以使它们失败?而且,这个'packages / mongo / collection.js'(通常是'packages / mongo')在哪里?我完全找不到它......

提前致谢。

1 个答案:

答案 0 :(得分:1)

每次重新启动计算机然后尝试提出任何类型的请求时,我都会收到此错误。它似乎与favicon.ico文件有关。我只是使用本地主机来测试API调用,所以我显然没有这个文件。我很确定我的请求是将其作为数据库名称读取,这将具有非法的“。”字符。我终于补充道:

app.get('/favicon.ico', function(req, res) {
    res.sendStatus(204);
});

现在一切似乎都有效了。

,每次我发出请求时,favicon.ico请求都会有204个响应