MySQL Driver

Fluent uses the MySQL driver to talk to your MySQL database. Although you won't need to use it most of the time, it does have some handy features.


Sometimes you need to bypass Fluent and send raw queries to the database.

let result = try mysqlDriver.raw("SELECT @@version")


If you are using Vapor, you can get access to the MySQL Driver with drop.mysql()


If you are performing multiple queries that depend on eachother, you can use transactions to make sure nothing gets saved to the database if one of the queries fails.

try mysqlDriver.transaction { conn in
    // delete user's pets, then delete user
    // if one of these fails, the transaction will rollback
    try user.pets.makeQuery(conn).delete()
    try user.makeQuery(conn).delete()


Make sure to use the connection supplied to the closure for all queries you want included in the transaction.


You can also manually send a query to the driver without going through Fluent.

let query = try User.makeQuery()

let results = try mysqlDriver.query(query)