关于Directus同时连接多数据库的技术咨询
Directus 多数据库连接支持说明
Directus 完全支持同时连接多个不同类型的数据库,包括你提到的 PostgreSQL、SQL Server 以及 AWS 生态下的各类数据库(比如 AWS RDS PostgreSQL/SQL Server、Amazon Aurora、Amazon Redshift 等)。
配置方式
你可以通过环境变量或者配置文件(directus.config.js)来定义多个数据库连接:
环境变量示例
# 主数据库(PostgreSQL) DB_CLIENT=pg DB_HOST=postgres-host DB_PORT=5432 DB_DATABASE=main-db DB_USER=admin DB_PASSWORD=secret # 第二个数据库(SQL Server) DB_SQLSERVER_CLIENT=mssql DB_SQLSERVER_HOST=mssql-host DB_SQLSERVER_PORT=1433 DB_SQLSERVER_DATABASE=sqlserver-db DB_SQLSERVER_USER=sa DB_SQLSERVER_PASSWORD=another-secret # AWS RDS PostgreSQL 作为第三个数据库 DB_AWS_RDS_CLIENT=pg DB_AWS_RDS_HOST=aws-rds-pg-host.xxxxxx.us-east-1.rds.amazonaws.com DB_AWS_RDS_PORT=5432 DB_AWS_RDS_DATABASE=aws-rds-db DB_AWS_RDS_USER=rds-admin DB_AWS_RDS_PASSWORD=rds-secret
配置文件(directus.config.js)示例
export default defineConfig({ databases: { main: { client: 'pg', connection: { host: 'postgres-host', port: 5432, database: 'main-db', user: 'admin', password: 'secret', }, }, sqlserver: { client: 'mssql', connection: { host: 'mssql-host', port: 1433, database: 'sqlserver-db', user: 'sa', password: 'another-secret', }, }, aws_rds: { client: 'pg', connection: { host: 'aws-rds-pg-host.xxxxxx.us-east-1.rds.amazonaws.com', port: 5432, database: 'aws-rds-db', user: 'rds-admin', password: 'rds-secret', }, }, }, });
使用方式
- 在 API 请求中,通过添加
?database=sqlserver这类参数,指定要操作的数据库实例。 - 在自定义代码或扩展中,通过
database('sqlserver')来获取对应数据库的操作实例,进行数据读写。
注意事项
- 确保安装了对应数据库的客户端依赖:Directus 默认包含常见数据库的客户端,但部分特殊 AWS 数据库可能需要额外安装(比如 Redshift 需要对应的驱动)。
- AWS 数据库连接需符合平台要求:比如使用 IAM 认证的 RDS,要配置认证参数而非直接使用密码;Redshift 可能需要调整连接字符串格式。
- 给 Directus 配置足够的数据库权限:确保它能对目标数据库执行必要的读写、Schema 变更等操作。
内容的提问来源于stack exchange,提问作者Parul Mishra
相关产品推荐
相关产品推荐

