Strapi v4多数据库配置:本地用SQLite,Dev/Prod用MySQL
Strapi 4.6.0 多环境数据库配置实现方案
完全可以实现,通过在config/database.js中根据环境变量动态返回对应数据库配置即可,具体修改如下:
修改后的config/database.js代码
module.exports = ({ env }) => { // 获取当前环境,默认设为local(本地环境) const currentEnv = env('NODE_ENV', 'local'); // 本地环境使用SQLite if (currentEnv === 'local') { return { connection: { client: 'sqlite', connection: { filename: env('DATABASE_FILENAME', '.tmp/data.db'), }, useNullAsDefault: true, pool: { min: 2, max: 10, }, }, }; } // 开发(dev)和生产(prod)环境使用MySQL return { connection: { client: 'mysql', connection: { host: env('DATABASE_HOST'), port: env.int('DATABASE_PORT'), database: env('DATABASE_NAME'), user: env('DATABASE_USERNAME'), password: env('DATABASE_PASSWORD'), ssl: env.bool('DATABASE_SSL', false), }, pool: { min: 2, max: 10, }, }, }; };
配置说明
- 环境区分逻辑:通过
NODE_ENV环境变量识别当前环境,本地开发时设置为local,开发服务器设为development,生产服务器设为production。 - SQLite配置:本地环境自动使用SQLite,默认数据库文件路径为
.tmp/data.db,可通过DATABASE_FILENAME环境变量自定义路径,useNullAsDefault是SQLite必填项。 - MySQL配置:非本地环境直接复用你原有的MySQL配置,依赖对应的环境变量(如
DATABASE_HOST、DATABASE_PASSWORD等)。
环境变量设置
在项目根目录的.env文件中添加对应配置:
- 本地开发环境(
.env):NODE_ENV=local # 可选:自定义SQLite文件路径 # DATABASE_FILENAME=./data/local.db - 开发服务器环境(
.env.dev或直接在服务器设置):NODE_ENV=development DATABASE_HOST=你的开发数据库地址 DATABASE_PORT=3306 DATABASE_NAME=dev_db_name DATABASE_USERNAME=dev_db_user DATABASE_PASSWORD=dev_db_pass - 生产服务器环境(
.env.prod或直接在服务器设置):NODE_ENV=production DATABASE_HOST=你的生产数据库地址 DATABASE_PORT=3306 DATABASE_NAME=prod_db_name DATABASE_USERNAME=prod_db_user DATABASE_PASSWORD=prod_db_pass DATABASE_SSL=true
注意事项
- 确保本地项目已安装SQLite依赖,若未安装执行
npm install sqlite3即可。 - 不同环境的
.env文件需妥善保管,避免提交到版本控制系统(.gitignore默认已忽略.env)。 - 切换环境时,Strapi会自动加载对应数据库配置,无需修改代码。
内容的提问来源于stack exchange,提问作者nicvazquez
相关产品推荐
相关产品推荐

