Skip to content
Advertisement

How to re-run Diesel migrations?

I’m using Diesel with PostgreSQL. I added my migrations, and they worked fine, outputting everything in the schema.rs file. Until I noticed that I was missing the created_at fields on some of my migrations. I edited the SQL and ran diesel migration run. Nothing happened, no errors, no success. Is there a way to fix this and re-run my migrations?

Advertisement

Answer

The command

diesel migration run

Only applies migrations. If you would like to revert a migration you have to run:

diesel migration revert

Using these commands together you can “redo” an applied migration like this:

diesel migration revert
diesel migration run

This pattern is common enough that diesel provides this shortcut command that does the same thing as the above 2 commands:

diesel migration redo

Note: all of these commands only run, revert, or redo a single migration at a time. If you want to run, revert, or redo multiple migrations or all migrations you’re going to have to manually run the commands multiple times, that is until a new version of diesel is released and this feature becomes available, when you’ll be able to redo all migrations by simply running:

diesel migration redo --all

Note: all of the commands will only work correctly if you’ve written a down.sql for every migration you intend to revert or redo.

User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement