启动rethinkdb实例时,它会自动创建一个名为“test”的数据库。当您运行多个实例并使用purcahse
对其进行群集时,会导致问题:
sell
如果您尝试删除数据库,即使用
rethinkdb proxy
这将产生以下错误:
Database name conflict: test is the name of more than one database
那么如何防止RethinkDB自动创建'test'数据库呢?或者如果遇到名称冲突,如何删除数据库?
答案 0 :(得分:0)
经过一段时间的挖掘后,我没有找到任何好的选项来阻止RethinkDB在启动时尝试创建默认的test
数据库。上述问题仅在群集节点使用不同的数据目录时发生。否则,他们不会尝试创建额外的test
数据库,因为其他节点只会识别它已经存在(由启动的第一个节点创建)。
我最终在我的后端软件中通过在test
数据库中的db_config
表中枚举启动期间名为rethinkdb
的所有数据库来解决此问题。
示例:
// Read from the database 'rethinkdb' that holds information about other databases
r.db("rethinkdb")
// Table db_config contains database id, name information
.table("db_config")
// Filter by name 'test'
.filter({name: "test"})
.run(conn, function(err, cursor) {
// Get results from cursor by id and rename
cursor.each(function(err, result){
r.db("rethinkdb")
.get(result.id)
.update({name: "other_name"})
.run(conn, function(err, result) {
console.log(result.replaced);
});
});
});
答案 1 :(得分:0)
如果使用rethinkdb create
创建数据目录,则不会创建test
数据库。
例如,如果rethinkdb_data
不存在,则会创建没有test
数据库的内容:
rethinkdb create
rethinkdb
这也会这样做,但使用-d
来指定数据目录的位置:
rethinkdb create -d /var/lib/rethinkdb/data
rethinkdb -d /var/lib/rethinkdb/data