列出数据库

您可以使用 Cypher 命令 SHOW DATABASES 列出数据库。

语法

命令 语法

SHOW DATABASE

SHOW { DATABASE[S] name | DATABASE[S] | DEFAULT DATABASE | HOME DATABASE }
[WHERE expression]
SHOW { DATABASE[S] name | DATABASE[S] | DEFAULT DATABASE | HOME DATABASE }
YIELD { * | field[, ...] } [ORDER BY field[, ...]] [SKIP n] [LIMIT n]
[WHERE expression]
[RETURN field[, ...] [ORDER BY field[, ...]] [SKIP n] [LIMIT n]]

SHOW DATABASES 输出

根据您希望查看的内容,您可以列出

  • 所有数据库。

  • 特定数据库。

  • DBMS 默认数据库。

  • 主数据库。

这些命令返回以下列

表 1. 列出数据库输出
描述 类型

name

数据库的名称。 默认输出

字符串

type

数据库的类型:systemstandardcomposite默认输出

字符串

aliases

数据库可能具有的任何别名。 默认输出

列表<字符串>

access

数据库访问模式,read-writeread-only默认输出 当使用 ALTER DATABASE …​ SET ACCESS READ ONLY 时,数据库可能被描述为只读。

字符串

databaseID

数据库的唯一 ID。

数据库必须处于 onlinedeallocating 状态此值才可用。对于其他数据库状态,此值为 NULL

字符串

serverID

服务器实例 ID。

字符串

address

集群 DBMS 中的实例地址。独立数据库的默认值为 neo4j://localhost:7687默认输出

字符串

role

数据库的当前角色(primarysecondaryunknown)。 默认输出

复合数据库的值为 NULL,因为它不适用于复合数据库。

字符串

writer

对于接受此数据库写入的实例,为 true(此实例是此数据库在集群中的领导者,或者这是一个独立实例)。 默认输出

布尔值

requestedStatus

数据库的预期状态。值可以是 onlineoffline默认输出

字符串

currentStatus

数据库的实际状态。 默认输出

可能的状态有

  • 在线

  • 离线

  • 正在启动

  • 正在停止

  • 存储复制

  • 初始

  • 正在解除分配

  • 脏数据

  • 已隔离

  • 未知

有关更多信息,请参阅数据库状态

字符串

statusMessage

一条解释数据库状态的消息,通常解释为什么它没有处于正确状态。 默认输出

字符串

default

如果这是 DBMS 的默认数据库,则为 true默认输出 不通过 SHOW HOME DATABASESHOW DEFAULT DATABASE 返回。

布尔值

home

如果这是当前用户的主数据库,则为 true默认输出 不通过 SHOW HOME DATABASESHOW DEFAULT DATABASE 返回。

布尔值

currentPrimariesCount

报告当前运行的此数据库的主节点数量。这与 role=primaryname=此数据库 的行数相同。

复合数据库的值为 NULL,因为它不适用于复合数据库。[1]

整数

currentSecondariesCount

报告当前运行的此数据库的副本数量。这与 role=secondaryname=此数据库 的行数相同。

复合数据库的值为 NULL,因为它不适用于复合数据库。[1]

整数

requestedPrimariesCount

此数据库请求的主节点数量。如果 DBMS 当前正在减少数据库副本数量,则可能低于当前值;如果正在增加副本数量,则可能高于当前值。

复合数据库的值为 NULL,因为它不适用于复合数据库。

整数

requestedSecondariesCount

此数据库请求的副本数量。如果 DBMS 当前正在减少数据库副本数量,则可能低于当前值;如果正在增加副本数量,则可能高于当前值。

复合数据库的值为 NULL,因为它不适用于复合数据库。

整数

creationTime

数据库创建的日期和时间。

分区日期时间

lastStartTime

数据库上次启动的日期和时间。

分区日期时间

lastStopTime

数据库上次停止的日期和时间。

分区日期时间

store

有关存储引擎和存储格式的信息。

该值是一个字符串,格式为 {storage engine}-{store format}-{major version}.{minor version}

数据库必须处于 onlinedeallocating 状态此值才可用。对于其他数据库状态,此值为 NULL

复合数据库的值为 NULL,因为它不适用于复合数据库。[1]

字符串

lastCommittedTxn

接收到的最后一个事务的 ID。

数据库必须处于 onlinedeallocating 状态此值才可用。对于其他数据库状态,此值为 NULL

整数

replicationLag

当前数据库与主实例上的数据库相比落后事务的数量。滞后以负整数表示。在独立环境中,该值始终为 0

数据库必须处于 onlinedeallocating 状态此值才可用。对于其他数据库状态,此值为 NULL

整数

constituents

数据库可能具有的任何组成部分的名称。仅适用于复合数据库。 默认输出

列表<字符串>

options

应用于数据库的选项映射。

复合数据库的值为 NULL,因为它不适用于复合数据库。

映射

1. 此更改适用于 2025.04 及更高版本以及 5.26.5 及更高版本。

SHOW DATABASES 命令的结果根据用户的 ACCESS 权限进行过滤。但是,某些权限允许用户查看额外的数据库,无论其 ACCESS 权限如何

  • 拥有 CREATE/DROP/ALTER DATABASESET DATABASE ACCESS 权限的用户可以查看所有标准数据库。

  • 拥有 CREATE/DROP COMPOSITE DATABASECOMPOSITE DATABASE MANAGEMENT 权限的用户可以查看所有复合数据库。

  • 拥有 DATABASE MANAGEMENT 权限的用户可以查看所有数据库。

如果用户未被授予任何数据库的 ACCESS 权限,也未被授予上述任何特殊情况的权限,则该命令仍可执行,但它将仅返回始终可见的 system 数据库。

数据库状态

数据库的 currentStatus 可以是以下之一

状态 描述

在线

数据库正在运行。

离线

数据库未运行。如果 statusMessage 列已填充,则数据库由于问题而未运行。

正在启动

数据库未运行,但即将运行。

正在停止

数据库已停止运行,但尚未完全停止。尚无法执行任何离线操作(例如 load/dump)。

存储复制

数据库当前正在从另一个 Neo4j 实例更新。

初始

数据库尚未创建。

正在解除分配

仅适用于集群中的数据库。数据库仍然在线,但最终会因其在集群中的角色转移到另一个成员而离线。状态将是 deallocting,直到传输完成,这可能需要几秒到一天或更长时间。

脏数据

此状态表示已发生错误。数据库的基础存储文件可能无效。有关更多信息,请查阅 statusMessage 列或服务器日志。

已隔离

数据库已有效停止,其状态在不再隔离之前可能不会更改。有关更多信息,请查阅 statusMessage 列或服务器日志。

未知

此 Neo4j 实例不知道此数据库的状态。

请注意,对于失败的数据库,currentStatusrequestedStatus 是不同的。这通常意味着一个错误,但并非总是如此。例如,数据库可能由于执行恢复而需要一段时间才能从 offline 转换为 online。或者,在正常操作期间,由于必要的自动化过程(例如一个 Neo4j 实例从另一个实例复制存储文件),数据库的 currentStatus 可能会暂时与 requestedStatus 不同。

显示所有可用数据库

可以使用命令 SHOW DATABASES 显示所有可用数据库的摘要。

查询
SHOW DATABASES
结果
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| name     | type       | aliases                      | access       | address          | role      | writer | requestedStatus | currentStatus | statusMessage | default | home  | constituents |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "movies" | "standard" | ["films", "motion pictures"] | "read-write" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | FALSE   | FALSE | []           |
| "neo4j"  | "standard" | []                           | "read-write" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | TRUE    | TRUE  | []           |
| "system" | "system"   | []                           | "read-write" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | FALSE   | FALSE | []           |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

SHOW DATABASES 命令也会返回托管在离线服务器上的数据库。对于此类数据库,address 列显示 NULLcurrentStatus 列显示 unknownstatusMessage 显示 Server is unavailable

显示特定数据库的详细信息

在此示例中,可以使用命令 SHOW DATABASE name YIELD * 显示特定数据库的详细信息。提供 YIELD 子句时,将返回所有列。

查询
SHOW DATABASE movies YIELD *
结果
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| name     | type       | aliases                      | access       | databaseID                                                         | serverID                               | address          | role      | writer | requestedStatus | currentStatus | statusMessage | default | home  | currentPrimariesCount | currentSecondariesCount | requestedPrimariesCount | requestedSecondariesCount | creationTime             | lastStartTime            | lastStopTime | store                | lastCommittedTxn | replicationLag | constituents | options |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "movies" | "standard" | ["films", "motion pictures"] | "read-write" | "C066801F54B44EA1520F0FE392B4005AABF42D8DD0A5FD09969B955575D287D5" | "e3063985-e2f4-4728-824b-a7d53779667a" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | FALSE   | FALSE | 1                     | 0                       | 1                       | 0                         | 2023-08-14T10:01:29.074Z | 2023-08-14T10:01:29.074Z | NULL         | "record-aligned-1.1" | 3                | 0              | []           | {}      |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

显示数据库数量

可以使用 YIELDRETURN 子句中的 count() 函数查看不同数据库的数量。

查询
SHOW DATABASES YIELD name
RETURN count(DISTINCT name) AS count
结果
+-------+
| count |
+-------+
| 3     |
+-------+

通过指定 name 列并按唯一名称对结果进行排序,仅计算不同数据库的数量,而不是集群环境中数据库的分配数量。

显示默认数据库

可以使用命令 SHOW DEFAULT DATABASE 查看默认数据库。

查询
SHOW DEFAULT DATABASE
结果
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| name    | type       | aliases | access       | address          | role      | writer | requestedStatus | currentStatus | statusMessage | constituents |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| "neo4j" | "standard" | []      | "read-write" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | []           |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+

显示主数据库

可以使用命令 SHOW HOME DATABASE 查看当前用户的主数据库。

查询
SHOW HOME DATABASE
结果
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| name    | type       | aliases | access       | address          | role      | writer | requestedStatus | currentStatus | statusMessage | constituents |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+
| "neo4j" | "standard" | []      | "read-write" | "localhost:7687" | "primary" | TRUE   | "online"        | "online"      | ""            | []           |
+--------------------------------------------------------------------------------------------------------------------------------------------------------+

筛选列出的数据库

还可以使用 YIELDORDER BYWHERE 来筛选和排序结果。

查询
SHOW DATABASES YIELD name, currentStatus, requestedStatus
ORDER BY currentStatus
WHERE name CONTAINS 'o'

在此示例中

  • 返回的列数已通过 YIELD 子句减少。

  • 返回列的顺序已更改。

  • 结果通过 ORDER BY 子句按 currentStatus 列排序。

  • 结果已筛选,只显示包含 'o' 的数据库名称。

还可以使用 SKIPLIMIT 对结果进行分页。

结果
+--------------------------------------------+
| name     | currentStatus | requestedStatus |
+--------------------------------------------+
| "movies" | "online"      | "online"        |
| "neo4j"  | "online"      | "online"        |
+--------------------------------------------+
© . All rights reserved.