表单中的数据库
字段的 dbConfig 如何指定数据库,以及旧表单如何继续工作
指定数据库
带有 query 的字段会在其 dbConfig 指定的数据库上运行该查询。
- name: datacenter
type: enum
dbConfig: cmdb # a database of Connections > Databases
query: select name from cmdb.datacenter
从 7.5.0 起,名称按以下顺序查找:
| 顺序 | 该名称是 | 查询使用的连接 |
|---|---|---|
| 1 | 连接 > 数据库 中的数据库 | 该数据库引用的凭据 |
| 2 | 否则为 连接 > 凭据 中类型为 数据库 的凭据 | 该凭据,与 7.5.0 之前相同 |
数据库类型(MySQL、MSSQL、PostgreSQL、Oracle 或 MongoDB)来自凭据,因此表单从不指定它。没有类型的凭据 按 MySQL 读取。
7.5.0 之前编写的表单
所有在 dbConfig 中指定凭据的表单都无需修改即可继续工作。
升级到 7.5.0 会为每个数据库凭据创建一个同名、并通过该凭据连接的数据库, 因此表单给出的名称现在会先找到该数据库,最终使用同一个登录信息。没有同名数据库的、类型为数据库的凭据 仍会在第 2 步中找到。
数据库和凭据可以同名,升级就是这样做的。此时数据库优先:将它指向另一个凭据,所有给出该名称的 表单都会随之改变,这样无需编辑表单就能把它迁移到另一台服务器。
dbConfig 的写法
dbConfig 一直接受的三种写法仍然有效,每个名称都按上述方式查找。
dbConfig | 示例 | 作用 |
|---|---|---|
| 一个名称 | dbConfig: cmdb | 查询该数据库 |
| 名称列表 | dbConfig: [cmdb-eu, cmdb-us] | 在每个数据库上运行查询并合并结果;不会去除重复项 |
| 对象(旧写法) | dbConfig: { name: cmdb, type: mysql } | 查询数据库或凭据 name;已弃用,请只使用名称 |
密钥库 引用,例如 dbConfig: secret:vault:secret/cmdb/db,既不是 数据库名称也不是凭据名称,仍和以前一样从密钥库读取。
哪些表单查询某个数据库
应用会读取表单,以确定哪些表单查询每个数据库。
数据库页面 的 使用者 列统计它们,单个数据库的页面 的 使用者 选项卡 列出它们及其字段。指定该数据库凭据而非数据库本身的字段也会计入。请先修改给出旧名称的表单,再重命名数据库。