Vapor GitHub

You're viewing documentation for an older version. View the latest version

MySQL Provider#

After you’ve added the MySQL Provider package to your project, setting the provider up in code is easy.

Add to Droplet#

First, register the MySQLProvider.Provider with your Droplet.

import Vapor
import MySQLProvider

let config = try Config()
try config.addProvider(MySQLProvider.Provider.self)

let drop = try Droplet(config)

...

Configure Fluent#

Once the provider is added to your Droplet, you can configure Fluent to use the MySQL driver.

Config/fluent.json

{
    "driver": "mysql"
}

Seealso

Learn more about configuration files in the Settings guide.

Configure MySQL#

If you run your application now, you will likely see an error that the MySQL configuration file is missing. Let’s add that now.

Basic#

Here is an example of a simple MySQL configuration file.

Config/mysql.json

{
    "hostname": "127.0.0.1",
    "user": "root",
    "password": "password",
    "database": "hello"
}

Note

It’s a good idea to store the MySQL configuration file in the Config/secrets folder since it contains sensitive information.

URL#

You can also pass the MySQL credentials as a URL.

Config/mysql.json

{
    "url": "http://root:password@127.0.0.1/hello"
}

Read Replicas#

Read replicas can be supplied by passing a single master hostname and an array of readReplicas hostnames.

Config/mysql.json

{
    "master": "master.mysql.foo.com",
    "readReplicas": ["read01.mysql.foo.com", "read02.mysql.foo.com"],
    "user": "root",
    "password": "password",
    "database": "hello"
}

Tip

You can also provide the readReplicas as a comma-separated string.

Driver#

You can get access to the MySQL Driver on the droplet.

import Vapor
import MySQLProvider

let mysqlDriver = try drop.mysql()

Configure Cache#

You can also choose to use your Fluent database (now set to MySQL) for caching.

Config/droplet.json

{
    "driver": "fluent"
}

Learn more about caching here.

Done#

Next time you boot your Droplet, you should see:

Database prepared

You are now ready to start using Fluent with your MySQL database.