我創建了一個複製集。 我在開頭添加了localhost
,但是當我嘗試用實際的主機名編輯成員時。我得到錯誤「例外:主機不能在本地主機和主機名之間切換」例外:主機不能在本地主機和主機名之間切換
我需要擺脫localhost:27017因爲,否則,它不會讓我輸入任何其他成員作爲主機名(即非本地主機地址)
my-rs0:PRIMARY> cfg=rs.conf();
{
"_id" : "my-rs0",
"version" : 1,
"members" : [
{
"_id" : 0,
"host" : "localhost:27017"
}
]
}
my-rs0:PRIMARY> cfg.members[0].host="my-server04:27017"
my-rs0:PRIMARY> cfg
{
"_id" : "my-rs0",
"version" : 1,
"members" : [
{
"_id" : 0,
"host" : "my-server04:27017"
}
]
}
使用rs.reconfig(CFG);
my-rs0:PRIMARY> rs.reconfig(cfg);
{
"errmsg" : "exception: hosts cannot switch between localhost and hostname",
"code" : 13645,
"ok" : 0
}
與rs.add沒有運氣( 「我的-SERVER04:27017」)或rs.remove( 「本地主機:27017」)爲好。
my-rs0:PRIMARY> rs.add("my-server04:27017");
{
"errmsg" : "exception: can't use localhost in repl set member names except when using it for all members",
"code" : 13393,
"ok" : 0
}
我已經嘗試了所有在這裏Replica Set Reconfig steps 提到的重新配置方法,但是,沒有固定上述問題。已經花了幾個小時,我真的很沮喪。
感謝您的信息,我刪除了整個數據庫,並用新的複製集設置重新創建。 – Watt
這是更簡單的方法:http://stackoverflow.com/a/8232241/757850 –