修改数据库

您可以使用 Cypher 命令 ALTER DATABASE 修改标准数据库。

语法

命令 语法

ALTER DATABASE

ALTER DATABASE name [IF EXISTS]
{
SET ACCESS {READ ONLY | READ WRITE} |
SET TOPOLOGY n PRIMAR{Y|IES} [m SECONDAR{Y|IES}] |
SET OPTION option value |
SET DEFAULT LANGUAGE CYPHER {5|25}
}
[WAIT [n [SEC[OND[S]]]]|NOWAIT]
ALTER DATABASE name [IF EXISTS]
REMOVE OPTION option
[WAIT [n [SEC[OND[S]]]]|NOWAIT]

对于不同的选项键,可以有多个 SET OPTIONREMOVE OPTION 子句。

从 2025.06 版本开始,SET DEFAULT LANGUAGE CYPHER {5|25} 在自托管部署和 Aura 上均可用。

修改数据库访问模式

默认情况下,数据库在创建时具有读写访问模式。可以通过配置设置 server.databases.default_to_read_onlyserver.databases.read_onlyserver.database.writable 将数据库限制为只读模式。有关详细信息,请参阅配置参数部分。

以读写访问模式创建的数据库可以更改为只读。要将其更改为只读,可以使用带有 SET ACCESS READ ONLY 子句的 ALTER DATABASE 命令。随后,可以使用 SET ACCESS READ WRITE 子句将数据库访问模式切换回读写模式。无论数据库是在线还是离线,都允许随时修改数据库访问模式。

如果 ALTER DATABASE 命令和配置参数设置的模式发生冲突(例如,一个设置为读写,另一个设置为只读),则数据库将处于只读状态并阻止写入查询。

修改访问模式仅适用于标准数据库,不适用于复合数据库。

将数据库访问模式修改为只读

要修改数据库访问模式,请使用以下命令,其中 actors 是数据库名称

ALTER DATABASE actors SET ACCESS READ ONLY

数据库访问模式可以在 SHOW DATABASES 命令的 access 输出列中查看。

SHOW DATABASES yield name, access
结果
+----------------------------+
| name        | access       |
+----------------------------+
| "actors"    | "read-only"  |
| "movies"    | "read-write" |
| "neo4j"     | "read-write" |
| "system"    | "read-write" |
+----------------------------+

使用 IF EXISTS 修改数据库访问

ALTER DATABASE 命令是可选幂等的,默认行为是如果数据库不存在则报错。在命令中添加 IF EXISTS 可以确保如果数据库不存在,则不会返回错误且不执行任何操作。

ALTER DATABASE nonExisting IF EXISTS
SET ACCESS READ WRITE

修改现有数据库的默认 Cypher 版本

您可以使用带有 SET DEFAULT LANGUAGE 子句的 ALTER DATABASE 命令更改现有数据库(包括 system 数据库)的默认 Cypher 版本。例如

ALTER DATABASE movies SET DEFAULT LANGUAGE CYPHER 25

此命令将 movies 数据库的默认 Cypher 版本更改为 Cypher 25。

要查看 DBMS 中每个数据库的默认 Cypher 版本,请使用 YIELD 子句运行 SHOW DATABASES 命令,并指定 defaultLanguage 列。例如

查询
SHOW DATABASES YIELD name, defaultLanguage
表 1. 结果
名称 (name) defaultLanguage

"actors"

"CYPHER 25"

"movies"

"CYPHER 25"

"neo4j"

"CYPHER 25"

"system"

"CYPHER 25"

行:4

将默认语言设置为 CYPHER 25 可确保在该数据库上运行的所有查询都将使用该数据库当前运行的 Cypher 25 版本(除非您在查询前加上 CYPHER 5,这将覆盖此默认值)。例如,具有默认语言 Cypher 25 的 Neo4j 2025.08 数据库将使用 Neo4j 2025.08 中存在的 Cypher 25,包括在 Neo4j 2025.06、2025.07 和 2025.08 中引入的所有更改。

修改数据库拓扑

在集群环境中,您可以使用 ALTER DATABASE 命令来更改承载数据库的服务器数量。有关更多信息,请参阅集群中的数据库管理

修改数据库选项

ALTER DATABASE 命令可用于设置或删除数据库的特定选项。

表 2. 可用选项
描述

txLogEnrichment

FULL|DIFF|OFF

定义为变更数据捕获 (CDC) 目的应用于事务日志的丰富化级别。有关丰富化模式的详细信息,请参阅变更数据捕获手册 → 修改数据库的 CDC 模式

ALTER DATABASE 命令不能用于修改数据库的存储格式。有关如何更改数据库存储格式的详细信息,请参阅更改现有数据库的存储格式

修改为数据库设置的选项

ALTER DATABASE `movies`
SET OPTION txLogEnrichment 'FULL'

数据库设置的选项可以在 SHOW DATABASES 命令的 options 输出列中查看。

SHOW DATABASES yield name, options
表 3. 结果
名称 (name) 选项 (options)

"actors"

{}

"movies"

{txLogEnrichment: "FULL"}

"neo4j"

{}

"system"

{}

行:4

移除为数据库设置的选项

ALTER DATABASE `movies`
REMOVE OPTION txLogEnrichment

REMOVE OPTION 子句使用 ALTER DATABASE 命令从数据库中移除指定的选项。

SHOW DATABASES YIELD name, options
表 4. 结果
名称 (name) 选项 (options)

"actors"

{}

"movies"

{}

"neo4j"

{}

"system"

{}

行:4