neo4j CREATE DATABASE 是事务性的吗?

问题描述

我正在使用 NodeJS 和 neo4j-driver 包。在服务器启动时,我需要确保我的 neo4j 集群中存在特定的数据库。因此我实现了这个方法

export const ensureAdminDatabaseExists = async () => {
  const session = neo4j
    .driver(
      NEO4J_CONNECTION_URL,neo4j.auth.basic(NEO4J_USERNAME,NEO4J_PASSWORD)
    )
    .session();
  await session.writeTransaction((tx) =>
    tx.run('CREATE DATABASE $dbname IF NOT EXISTS',{ dbname: 'admin' })
  );
  await session.close();
};

如果 Neo4j 中不存在这样的数据库并且我并行多次调用方法,那么至少有一个事务将失败并显示以下错误消息:

Neo4jError: Failed to create the specified database 'admin': Database already exists.

但是,如果数据库在启动时存在,则没有事务失败。因此,我质疑 CREATE DATABASE 查询是否是事务性的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)