Module diesel::migrations
[−]
[src]
Provides functions for maintaining database schema.
A database migration always provides procedures to update the schema, as well as to revert itself. Diesel's migrations are versioned, and run in order. Diesel also takes care of tracking which migrations have already been run automatically. Your migrations don't need to be idempotent, as Diesel will ensure no migration is run twice unless it has been reverted.
Migrations should be placed in a /migrations
directory at the root of your project (the same
directory as Cargo.toml
). When any of these functions are run, Diesel will search for the
migrations directory in the current directory and its parents, stopping when it finds the
directory containing Cargo.toml
.
Individual migrations should be a folder containing exactly two files, up.sql
and down.sql
.
up.sql
will be used to run the migration, while down.sql
will be used for reverting it. The
folder itself should have the structure {version}_{migration_name}
. It is recommended that
you use the timestamp of creation for the version.
Example
# Directory Structure
- 20151219180527_create_users
- up.sql
- down.sql
- 20160107082941_create_posts
- up.sql
- down.sql
-- 20151219180527_create_users/up.sql
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR NOT NULL,
hair_color VARCHAR
);
-- 20151219180527_create_users/down.sql
DROP TABLE users;
-- 20160107082941_create_posts/up.sql
CREATE TABLE posts (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL,
title VARCHAR NOT NULL,
body TEXT
);
-- 20160107082941_create_posts/down.sql
DROP TABLE posts;
Enums
MigrationError | |
RunMigrationsError |
Traits
Migration | |
MigrationConnection |
A connection which can be passed to the migration methods. This exists only to wrap up some constraints which are meant to hold for all connections. This trait will go away at some point in the future. Any Diesel connection should be useable where this trait is required. |
Functions
find_migrations_directory |
Returns the directory containing migrations. Will look at for
$PWD/migrations. If it is not found, it will search the parents of the
current directory, until it reaches the root directory. Returns
|
migration_from | |
revert_latest_migration |
Reverts the last migration that was run. Returns the version that was reverted. Returns an
|
run_migrations |
Run all pending migrations in the given list. Apps should likely be calling
|
run_pending_migrations |
Runs all migrations that have not yet been run. This function will print all progress to
stdout. This function will return an |
search_for_migrations_directory |
Searches for the migrations directory relative to the given path. See
|