在我本地的Mac上,我想在我的网络中的一台服务器上运行一个rake任务。到远程mysql数据库的所有种子都可以正常工作。但是,当我尝试为mongodb数据设定种子时,我得到了以下错误:
bundle exec rake db:seed RAILS_ENV=staging
rake aborted!
Moped::Errors::ConnectionFailure: Could not connect to a primary node for replica set
#<Moped::Cluster:70258359778560 @seeds=[<Moped::Node resolved_address="10.10.4.131:27017">]>
/Users/donato/.rvm/gems/ruby-2.1.2@core/gems/moped-2.0.4/lib/moped/cluster.rb:254:in `with_primary'我可以使用capistrano部署到该服务器。所以我知道这不是网络问题。我也已经尝试过解决方案here。我删除了mongod.lock,然后运行了service mongod restart,但没有成功。然而,在这个问题中,他试图在本地主机上运行它,而我想在我的网络内的另一台计算机上运行它。我能做什么?
发布于 2015-06-19 10:36:33
好了,我解决了。显然,mongodb默认不允许远程连接。它将仅在本地接口上可用,因此只能在机器本身内访问:
# netstat -tulpn | grep mongod
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 12963/mongod 要解决此问题,请查找mongodb配置文件的位置:
# find / -type f -name mongod*
/etc/mongodb.conf然后编辑文件并添加,然后添加计算机的专用ip地址(如果远程计算机与本地计算机在同一网络中,否则也必须添加公共ip地址):
bind_ip = 127.0.0.1,10.10.4.131然后重启mongodb,检查它是否在监听内网ip (除了环回接口):
service mongod restart
# netstat -tulpn | grep mongod
tcp 0 0 10.10.4.131:27017 0.0.0.0:* LISTEN 12963/mongod
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 12963/mongod 如果您有防火墙,请打开端口:
iptables -A INPUT -p tcp --dport 27017 -j ACCEPT然后从本地计算机确认您现在可以远程访问该端口:
$ nc -z 10.10.4.131 27017
Connection to 10.10.4.131 port 27017 [tcp/*] succeeded!现在你就知道了。现在,我们可以从本地机器中为临时mongodb数据库设定种子:
bundle exec rake db:seed RAILS_ENV=staging发布于 2015-10-08 22:17:43
这是因为您没有正确地停止mongodb,并且创建了mongodb锁。只需删除mongob lock.Follow这两步
1. 1.sudo rm /var/lib/mongodb/mongod.lock
2. 2.sudo服务mongodb启动
https://stackoverflow.com/questions/30928418
复制相似问题