Database Connector (MySQL)
Overview
A database connector is the bridge between Prisma and the underlying database. The MySQL connector is used to connect a Prisma server to a MySQL database.
The core responsibilities of a database connector are:
- Translate incoming GraphQL queries into SQL
- Send the generated SQL query to the database
- Create GraphQL responses based on database result
- Perform database migrations (optional)
When configuring your Prisma server with Docker, you need to specify which connector you'd like to use in order to connect to a certain database. You provide this info via the connector
property:
PRISMA_CONFIG: | managementApiSecret: __YOUR_MANAGEMENT_API_SECRET__ port: 4466 databases: default: connector: mysql migrations: __ENABLE_DB_MIGRATIONS__ host: __YOUR_DATABASE_HOST__ port: __YOUR_DATABASE_PORT__ user: __YOUR_DATABASE_USER__ password: __YOUR_DATABASE_PASSWORD__ connectionLimit: __YOUR_CONNECTION_LIMIT__
Copy
Migrations
The migrations
property in the PRISMA_CONFIG
environment variable specifies whether the database connector is able to make changes to the underlying database schema.
For existing databases (that might already be powering production applications), it is useful to configure the Prisma server to not migrate the connected database. This ensures you're not accidentally introducing unwanted schema changes or lose data.
PRISMA_CONFIG: | managementApiSecret: __YOUR_MANAGEMENT_API_SECRET__ port: 4466 databases: default: connector: postgres migrations: __ENABLE_DB_MIGRATIONS__ host: __YOUR_DATABASE_HOST__ port: __YOUR_DATABASE_PORT__ user: __YOUR_DATABASE_USER__ password: __YOUR_DATABASE_PASSWORD__
Copy
Database migrations
Enabling migrations through Prisma
If migrations
is set to true
, deploying a Prisma service migrates the structure of the connected database. In these cases, the Prisma CLI will be the main interface to govern the structure of the database based on the datamodel of your services:
PRISMA_CONFIG: | managementApiSecret: __YOUR_MANAGEMENT_API_SECRET__ port: 4466 databases: default: connector: postgres migrations: true host: __YOUR_DATABASE_HOST__ port: __YOUR_DATABASE_PORT__ user: __YOUR_DATABASE_USER__ password: __YOUR_DATABASE_PASSWORD__
Copy
Disabling migrations through Prisma
If migrations
is set to false
, the database schema is "locked" and Prisma won't perform any changes on it:
PRISMA_CONFIG: | managementApiSecret: __YOUR_MANAGEMENT_API_SECRET__ port: 4466 databases: default: connector: postgres migrations: false host: __YOUR_DATABASE_HOST__ port: __YOUR_DATABASE_PORT__ user: __YOUR_DATABASE_USER__ password: __YOUR_DATABASE_PASSWORD__
Copy
Managing database connections
The connectionLimit
property in PRISMA_CONFIG
determines the number of database connections a Prisma service is going to use.
The connectionLimit
needs to be set to at least 2. One connection is always reserved for the Management API, all other connections are used for the Prisma service.