Nodejs [mongdb]问题 mongoexport 使用报错

Nodejs [mongdb]问题 mongoexport 使用报错

mongoexport -d test -c test -h http://192.168.1.185:9000 -u we -p test -o ./data/back.json 求助大神

<pre> 2014-10-23T09:41:41.865+0800 Assertion failure _setName.size() src/mongo/client/dbclientinterface.h 219 2014-10-23T09:41:41.869+0800 0x1006adbcb 0x100666762 0x1006573e2 0x10003b7a7 0x100034c40 0x10064eba5 0x10064f322 0x100000dc4 0 mongoexport 0x00000001006adbcb _ZN5mongo15printStackTraceERSo + 43 1 mongoexport 0x0000000100666762 _ZN5mongo10logContextEPKc + 114 2 mongoexport 0x00000001006573e2 _ZN5mongo12verifyFailedEPKcS1_j + 274 3 mongoexport 0x000000010003b7a7 ZN5mongo16ConnectionStringC2ENS0_14ConnectionTypeERKSsS3 + 239 4 mongoexport 0x0000000100034c40 _ZN5mongo16ConnectionString5parseERKSsRSs + 124 5 mongoexport 0x000000010064eba5 ZN5mongo4Tool4mainEiPPcS2 + 293 6 mongoexport 0x000000010064f322 main + 66 7 mongoexport 0x0000000100000dc4 start + 52 libc++abi.dylib: terminating with uncaught exception of type mongo::AssertionException: assertion src/mongo/client/dbclientinterface.h:219 Abort trap: 6

</pre>


2 回复

针对您遇到的 mongoexport 使用报错问题,从错误日志来看,问题可能出在连接字符串的解析上。错误信息显示 _ZN5mongo16ConnectionStringC2ENS0_14ConnectionTypeERKSsS3,这通常意味着连接字符串格式不正确或有误。

解决方法

首先,请确保您的连接字符串格式正确,并且所有的参数都已正确传递。以下是一个示例命令,您可以尝试使用:

mongoexport -d test -c test -h 192.168.1.185:9000 -u we -p test --out ./data/back.json

注意:

  • -h 后面直接跟主机地址和端口,不需要加 http://
  • 使用 --out 而不是 -o,尽管两者都能工作,但 --out 是更推荐的用法。
  • 确保用户名和密码没有特殊字符,如果有的话,需要进行适当的转义。

示例代码

如果您希望在 Node.js 中通过程序来调用 mongoexport 命令,可以使用 child_process 模块来执行系统命令。以下是一个简单的示例:

const { exec } = require('child_process');

const command = 'mongoexport -d test -c test -h 192.168.1.185:9000 -u we -p test --out ./data/back.json';

exec(command, (error, stdout, stderr) => {
    if (error) {
        console.error(`执行出错: ${error}`);
        return;
    }
    console.log(`stdout: ${stdout}`);
    console.error(`stderr: ${stderr}`);
});

这段代码会执行 mongoexport 命令,并捕获任何输出或错误信息。

总结

确保您的 mongoexport 命令格式正确,特别是连接字符串部分。如果问题依旧存在,请检查 MongoDB 服务器的配置和权限设置,确保客户端能够正常连接到数据库。如果问题仍然无法解决,建议查看 MongoDB 的官方文档或寻求社区帮助。


根据你的描述,使用 mongoexport 命令时遇到了一个断言失败(Assertion Failure)的错误。这个错误通常表示 mongoexport 工具无法正确解析或连接到指定的 MongoDB 实例。

从错误信息来看,问题出在 ConnectionString 的解析上。ConnectionString 是用于描述如何连接到 MongoDB 数据库的一个字符串,包含了主机名、端口号、用户名、密码等信息。

以下是可能导致该错误的一些原因及解决方法:

  1. URL格式问题: 确保 MongoDB 连接 URL 的格式是正确的。例如:

    mongoexport -d test -c test -h 192.168.1.185:9000 -u we -p test -o ./data/back.json
    

    注意将 <a href="http://192.168.1.185:9000">http://192.168.1.185:9000</a> 修改为 192.168.1.185:9000

  2. 认证问题: 确保用户 we 具备访问数据库 test 的权限,并且密码 test 是正确的。

  3. MongoDB 版本兼容性: 检查你使用的 mongoexport 工具版本是否与 MongoDB 服务器版本兼容。不兼容可能导致解析错误。

如果上述建议没有解决问题,可以尝试使用 mongo shell 来验证连接和认证是否正常工作:

mongo --host 192.168.1.185:9000 -u we -p test --authenticationDatabase admin

这有助于确认是否是认证或者网络连接的问题。

回到顶部