# 数据库配置
./config/database.js
文件(或 TypeScript 的 ./config/database.ts
文件)用于定义将用于存储应用程序内容的数据库连接。
️❗️ WARNING
Strapi 应用程序不应连接到预先存在的数据库,不是由 Strapi 应用程序创建的,也不是连接到 Strapi v3 数据库的。Strapi 团队不会支持这样的尝试。尝试连接到不受支持的数据库可能会导致数据丢失,并且很可能会丢失数据。
🤓 支持的数据库
CLI 安装指南详细介绍了 支持的数据库和版本.
# 配置结构
./config/database.js
(或 TypeScript 中的 ./config/database.ts
) 接受 2 个主要配置对象:
connection
用于传递给 Knex.js (opens new window) 的数据库配置选项settings
对于特定于 Strapi 的数据库设置
# connection
配置对象
参数 | 描述 | 类型 | 默认值 |
---|---|---|---|
client | 用于创建连接的数据库客户端。 sqlite 或 postgres 或 mysql . | String | - |
connection | 数据库 连接信息 | Object | - |
debug | 显示数据库交换和错误 | Boolean | false |
useNullAsDefault Optional, only for SQLite | 使用 NULL 作为默认值 | Boolean | true |
pool Optional | 数据库池选项 | Object | - |
acquireConnectionTimeout Optional | 获取连接时,knex 在抛出超时错误之前将等待多长时间(以毫秒为单位) | Integer | 60000 |
# 连接参数
The connection.connection
object found in ./config/database.js
(or ./config/database.ts
for TypeScript) is used to pass database connection information and accepts the following parameters:
参数 | 描述 | 类型 |
---|---|---|
host | 数据库主机名。默认值: localhost . | String |
port | 数据库端口 | Integer |
database | 数据库名 | String |
user | 用于建立连接的用户名 | String |
password | 用于建立连接的密码 | String |
timezone | 设置本地时间的默认行为。默认值: utc 时区选项 (opens new window) | String |
schema | 设置默认数据库架构。仅用于 Postgres DB | String |
ssl | 对于 SSL 数据库连接。 使用对象将证书文件作为字符串传递。 | Boolean or Object |
# 数据库池选项
在 ./config/database.js
(或 TypeScript 的 ./config/database.ts
) 中可以选择找到的 connection.pool
对象用于传递 Tarn.js (opens new window) 数据库池选项并接受以下参数:
✋ CAUTION
使用 Docker 时,将 pool min
值更改为 0
,因为 Docker 将终止任何空闲连接,从而无法保留与数据库的任何打开连接 (有关详细信息,请参阅 Tarn.js's pool (opens new window))。
参数 | 描述 | 类型 | 默认值 |
---|---|---|---|
min | 保持连接的最小数据库连接数 | Integer | 2 |
max | 保持连接的最大数据库连接 | Integer | 10 |
acquireTimeoutMillis | 数据库连接超时前的时间(以毫秒为单位) attempt | Integer | 60000 |
createTimeoutMillis | 创建查询超时前的时间(以毫秒为单位) attempt | Integer | 30000 |
destroyTimeoutMillis | 销毁查询超时前的时间(以毫秒为单位) attempt | Integer | 5000 |
idleTimeoutMillis | 空闲数据库连接前的时间(以毫秒为单位)destroyed | Integer | 30000 |
reapIntervalMillis | 检查空闲数据库连接的时间(以毫秒为单位) destroy | Integer | 1000 |
createRetryIntervalMillis | 重试失败创建之前空闲时间(以毫秒为单位)actions | Integer | 200 |
afterCreate | 回调函数,用于在池获取新连接时执行自定义逻辑。 有关详细信息,请参阅 Knex.js documentation (opens new window) | Function | - |
# settings
配置对象
在 ./config/database.js
(或 TypeScript 的 ./config/database.ts
)中找到的 settings
对象用于配置 Strapi 特定的数据库设置,并接受以下参数:
参数 | 描述 | 类型 | 默认值 |
---|---|---|---|
forceMigration | 启用或禁用强制数据库迁移。 | Boolean | true |
# 配置示例
# 数据库中的配置
配置文件对多服务器不友好。若要更新生产中的配置,可以使用数据存储来获取和设置设置。
# 获取 settings
environment
(string): 设置要在其中存储数据的环境。默认情况下,它是当前环境(如果您的配置与环境无关,则可以是空字符串)。type
(string): 设置您的配置是针对api
、plugin
还是core
。默认情况下,它是core
name
(string): 如果type
是api
或plugin
,则必须设置插件或 api 名称。key
(string, required): 要存储的密钥的名称。
// strapi.store(object).get(object);
// create reusable plugin store variable
const pluginStore = strapi.store({
environment: strapi.config.environment,
type: 'plugin',
name: 'users-permissions',
});
await pluginStore.get({ key: 'grant' });
# 设置 settings
value
(any, required): 要存储的值。
// strapi.store(object).set(object);
// create reusable plugin store variable
const pluginStore = strapi.store({
environment: strapi.config.environment,
type: 'plugin',
name: 'users-permissions'
});
await pluginStore.set({
key: 'grant',
value: {
...
}
});
# 数据库安装指南
Strapi 您提供了为您的项目选择最合适的数据库的选项。它目前支持 PostgreSQL,SQLite,MySQL 和 MariaDB。
以下文档介绍了如何在本地安装 SQLite(用于开发目的):
✋ CAUTION
其他数据库(MySQL,MariaDB)的安装指南正在重做。你可以为此做出一份 贡献 (opens new window) 。