#sql #schema #migration

archived barrel

A powerful schema migration building API for Rust

28 releases

0.7.0 Nov 8, 2021
0.6.5 Jan 21, 2020
0.6.3 Dec 26, 2019
0.6.2 Jun 13, 2019
0.2.0 Mar 4, 2018

#2109 in Database interfaces

Download history 550/week @ 2023-06-09 740/week @ 2023-06-16 642/week @ 2023-06-23 544/week @ 2023-06-30 616/week @ 2023-07-07 910/week @ 2023-07-14 757/week @ 2023-07-21 607/week @ 2023-07-28 577/week @ 2023-08-04 834/week @ 2023-08-11 517/week @ 2023-08-18 462/week @ 2023-08-25 893/week @ 2023-09-01 975/week @ 2023-09-08 600/week @ 2023-09-15 626/week @ 2023-09-22

3,221 downloads per month
Used in 10 crates (5 directly)

MIT/X11 OR Apache-2.0


A powerful database schema builder, that lets you write your SQL migrations in Rust!

barrel offers callback-style builder functions for SQL migrations and is designed to be flexible, portable and fun to use. It provides you with a common interface over SQL, with additional database-specific builders.

This way you can focus on your Rust code, without having to worry about SQL.


The following example will help you get started

use barrel::{types, Migration};
use barrel::backend::Pg;

fn main() {
    let mut m = Migration::new();

    m.create_table("users", |t| {
        t.add_column("name", types::varchar(255));
        t.add_column("age", types::integer());
        t.add_column("owns_plushy_sharks", types::boolean());

    println!("{}", m.make::<Pg>());

Using Diesel

Since diesel 1.2.0 it's possible to now use barrel for migrations with diesel. A guide with some more information on how to get started can be found here

Migration guide

If you've been using barrel to write migrations for diesel before the 0.5.0 release, some migration of your migrations will be required. Since 0.5.0 the way types are constructed changed. Instead of constructing a type with Types::VarChar(255) (an enum variant), the types are now provided by a module called types and builder functions. The same type would now be types::varchar(255) (a function call), which then returns a Type enum.

You can also directly created your own Type builders this way. Check the docs for details!


barrel is free software: you can redistribute it and/or modify it under the terms of the MIT Public License.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MIT Public License for more details.


In the interest of fostering an open and welcoming environment, the barrel project pledges to making participation a harassment-free experience for everyone. See Code of Conduct for details. In case of violations, e-mail kookie@spacekookie.de.


~101K SLoC