Search code examples
typescriptconfigurationmikro-orm

Database does not exist when migration create in mikroORM


I tried to mikroORM create migrations but it seems that I cannot create the table itself. I don't know what I missed and the error says database "crm" does not exist.

Please see code below:

mikro-config.ts

import { MikroORM } from "@mikro-orm/core";
import { Post } from "./entities/Post";
import { __prod__ } from "./constants";
import path from "path";

export default {
  migrations: {
    path: path.join(__dirname, "./migrations"), // path to the folder with migrations
    pattern: /^[\w-]+\d+\.[tj]s$/, // regex pattern for the migration files
  },
  entities: [Post],
  dbName: "crm",
  type: "postgresql",
  user: "postgres",
  debug: !__prod__,
} as Parameters<typeof MikroORM.init>[0];

index.ts

import { MikroORM as MK } from "@mikro-orm/core";
import { __prod__ } from "./constants";
import { Post } from "./entities/Post";
import mikroOrmConfig from "./mikro-orm.config";

const main = async () => {
  const orm = await MK.init(mikroOrmConfig);

  const post = orm.em.create(Post, {
    firstName: "Test",
    lastName: "Test2",
    dateOfBirth: "2012-01-01",
    email: "[email protected]",
    phone: "192803994",
    address: "34th street local avenue, trade city",
  });
  await orm.em.persistAndFlush(post);
};

main().catch((err) => console.log(err));

console.log("test");

Post.ts

import { Entity, PrimaryKey, Property } from "@mikro-orm/core";

@Entity()
export class Post {
  @PrimaryKey()
  _id!: number;

  @Property()
  createdAt: Date = new Date();

  @Property({ onUpdate: () => new Date() })
  updatedAt: Date = new Date();

  @Property()
  firstName!: string;

  @Property()
  lastName!: string;

  @Property()
  dateOfBirth!: Date;

  @Property()
  email!: string;

  @Property()
  phone!: string;

  @Property()
  Address!: string;
}

npx mikro-orm migration:create --initial.

I've already delete the folders and tried again nothing happen.


Solution

  • You need to create a postgres database separately. Mikro-orm will not create a database for you.

    Create a postgres database with name "crm" and then run and apply migrations your tables will be created.