Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

db already exists with different case other

Tags:

java

mongodb

i try to read data from a MongoDB. and i have a problem:

Exception in thread "main" com.mongodb.MongoException: db already exists with different case other 

the exeption throws from here:

DBCursor cur[] = new DBCursor[cursorSize];
...
cur[i].hasNext() // Exeption

what is the problem?

the version of Mongo is 2.10.1

like image 995
asaf app Avatar asked Nov 21 '13 16:11

asaf app


2 Answers

This error indicates that you are trying to create a database that differs by case only from a database name that already exists. For example, if you already have a database called "test", you will get this error trying to create "Test", "TEST", or other variations of upper or lower case for the existing name.

The database name is used in naming the data extent files, so clashes in name could cause Bad Things to happen on case-insensitive file systems.

The MongoDB manual has further details on Naming Restrictions, including case sensitivity and restrictions specific to different operating systems.

The useful part of the error message appears to have been omitted in the question description, but what you should see as part of this message is the name of the existing database as well as the new name that is being rejected.

The corresponding MongoDB 2.4 server code snippet is:

 ss << "db already exists with different case other: [" << duplicate << "] me [" << _name << "]";
like image 95
Stennie Avatar answered Nov 08 '22 22:11

Stennie


I think Stennie has very well defined and explained why you might be getting this error. However, in my case, I encountered an interesting case which you or others may also encounter. I had the the database called "HDB" but when I added my user to system.users collection with "db":"hdb" (lower case). So, I spent an hour or so trying to see what could have gone wrong while I was able to login. So, if you get this error make sure you did not accidentally add your user with lower/different case for db name. To confirm this. 1.Log in as the admin/default account run

db.system.users.find().pretty(); 

and then look for the user name that is getting this error along with the "db" in that json object and compare it against actual database you have.

  1. Run

show dbs;

compare the db you see in step one against the name of db that you see in this step. (the command will show you all the databses you have but clearly you should only be concerned with the ones that you use/see in step one).

like image 1
grepit Avatar answered Nov 08 '22 21:11

grepit