How to Create Migrations
In this document, you’ll learn how to create a Migration using Typeorm on your Medusa server.
Step 1: Create Migration File
To create a migration that makes changes to your Medusa schema, run the following command:
npx typeorm migration:create -n UserChanged --dir src/migrations
This will create the migration file in the path you specify. You can use this without the need to install Typeorm's CLI tool. You can then go ahead and make changes to it as necessary.
The migration file must be inside the src/migrations
directory. When you run the build command, it will be transpiled into the directory dist/migrations
. The migrations run
command can only pick up migrations under the dist/migrations
directory on a Medusa server. This applies to migrations created in a Medusa server, and not in a Medusa plugin. For plugins, check out the Plugin's Structure section.
Generating Migrations for Entities
You can alternatively use Typeorm's generate
command to generate a Migration file from existing entity classes. As Medusa uses v0.2.45 of Typeorm, you have to create a ormconfig.json
first before using the generate
command.
Typeorm will be updated to the latest version in v1.8.0 of Medusa.
For example, create the file ormconfig.json
in the root of your Medusa server with the following content:
{
"type": "postgres",
"host": "localhost",
"port": 5432,
"username": "<YOUR_DB_USERNAME>",
"password": "<YOUR_DB_PASSWORD>",
"database": "<YOUR_DB_NAME>",
"synchronize": true,
"logging": false,
"entities": [
"dist/models/**/*.js"
],
"migrations": [
"dist/migrations/**/*.js"
],
"cli": {
"entitiesDir": "src/models",
"migrationsDir": "src/migrations"
}
}
Make sure to replace <YOUR_DB_USERNAME>
, <YOUR_DB_PASSWORD>
, and <YOUR_DB_NAME>
with the necessary values for your database connection.
Then, after creating your entity, run the build
command:
- npm
- Yarn
npm run build
yarn run build
Finally, run the following command to generate a Migration for your new entity:
npx typeorm@0.2.45 migration:generate -n PostCreate
Where PostCreate
is just an example of the name of the migration to generate. The migration will then be generated in src/migrations/<TIMESTAMP>-PostCreate.ts
. You can then skip to step 3 of this guide.
Step 2: Write Migration File
The migration file contains the necessary commands to create the database columns, foreign keys, and more.
You can learn more about writing the migration file in You can learn more about writing migrations in Typeorm’s Documentation.
Step 3: Build Files
Before you can run the migrations you need to run the build command to transpile the TypeScript files to JavaScript files:
- npm
- Yarn
npm run build
yarn run build
Step 4: Run Migration
The last step is to run the migration with the command detailed earlier
medusa migrations run
If you check your database now you should see that the change defined by the migration has been applied successfully.