To generate schema from your entity metadata, you can use SchemaGenerator
helper.
You can use it via CLI:
npx mikro-orm schema:create --dump # Dumps create schema SQL
npx mikro-orm schema:update --dump # Dumps update schema SQL
npx mikro-orm schema:drop --dump # Dumps drop schema SQL
You can also use
--run
flag to fire all queries, but be careful as it might break your database. Be sure to always check the generated SQL first before executing. Do not use--run
flag in production!
Or you can create simple script where you initialize MikroORM like this:
./create-schema.ts
import { MikroORM } from 'mikro-orm';
(async () => {
const orm = await MikroORM.init({
entities: [Author, Book, ...],
dbName: 'your-db-name',
// ...
});
const generator = orm.getSchemaGenerator();
const dropDump = await generator.getDropSchemaSQL();
console.log(dropDump);
const createDump = await generator.getCreateSchemaSQL();
console.log(createDump);
const updateDump = await generator.getUpdateSchemaSQL();
console.log(updateDump);
// there is also `generate()` method that returns drop + create queries
const dropAndCreateDump = await generator.generate();
console.log(dropAndCreateDump);
// or you can run those queries directly, but be sure to check them first!
await generator.dropSchema();
await generator.createSchema();
await generator.updateSchema();
await orm.close(true);
})();
Then run this script via ts-node
(or compile it to plain JS and use node
):
$ ts-node create-schema