Skip to content

nodejs 使用 db-migrate

Published: at 上午01:31

nodejs db mirgationej

npm init

enter 到底

安裝 db-migrate

npm install db-migrate

於node_modules/db-migrate/bin 增加一隻檔案 database.json

裡面填寫db連線相關資料

mysql

{
    "dev": {
      "driver": "mysql",
      "user": "",
      "password": "",
      "host": "",
      "database": "",
      "multipleStatements": true
    }
  }

將命令提示字元(CMD) 開到node_modules/db-migrate/bin

db-migrate db:create hello

會出現

[ERROR] AssertionError [ERR_ASSERTION]: ifError got unwanted exception: No such driver found, please try to install it via npm install db-migrate-mysql or npm install -g db-migrate-mysql

於是就在裝

 npm install db-migrate-mysql

在一次create hello

[INFO] Created database "hello"

連到db 就可以看到新開了一個hello 的db了

新增一個migrate

db-migrate create test

就可以看到目前所在的資料夾多了一個migrations的資料夾 裡面會有一個日期加上名稱的js

那就是migrate的腳本了 點開後

注意兩個地方

exports.up = function (db) {
  return db.createTable("newtable", {
    id: { type: "int", primaryKey: true },
    name: "string",
  });
};

exports.down = function (db) {
  return db.dropTable("newtable");
};

將return 後面都換成相關的 這樣就你的migrate 寫好了

up

db-migrate up

預設會將全部跑起來 可以指定跑幾個或是檔名

db-migrate up -c 5 // 這樣就是跑最近的五個
db-migrate up 20150207135259-myFancyMigration // 這樣就是跑檔名

down

db-migrate down

預設只會down一個回去

可以指定跑幾個

db-migrate down -c 5 // 這樣就是跑最近的五個

reset

db-migrate reset

reset

github

參考

https://db-migrate.readthedocs.io/en/latest/

https://www.qiuzhi99.com/articles/node-db-migrate-ru-men