Node.js를 사용한 Migration 기능을 사용해 보았습니다.
소개
집의 PC, 노트북, 연구실의 PC로 개발하는 일이 있어, 소스 코드는 Git로 관리하고 있기 때문에 스트레스는 없지만,
DB는 수동으로 재기록을 하고 있어, 재기록 잊어에 의한 버그나 변경점을 기억하기 때문에 쓸데없는 시간이 걸린다
그런 때 바이트 앞에서 Ruby나 CakePHP등에는 Migration이라는 기능이 있다는 것을 듣고, Node.js를 사용해 보고 싶다고 생각해 보았다
Node.js를 사용한 Migration 기사가 적었기 때문에 작성하려고합니다.
※OS는 Windows, MacOS에서 실시했습니다
데이터베이스 마이그레이션이란?
데이터베이스를 삭제하고 다시 작성하면 DB에 저장된 모든 정보가 삭제됩니다.
이러한 상황을 피하는 방법으로 데이터베이스 마이그레이션을 수행하는 방법이 있습니다.
마이그레이션이란 DB에 저장된 데이터를 유지하면서 테이블을 작성하거나 열을 변경하는 등의 기능
자세한 것은 여기 등을 불러 주세요
전제
데이터베이스를 삭제하고 다시 작성하면 DB에 저장된 모든 정보가 삭제됩니다.
이러한 상황을 피하는 방법으로 데이터베이스 마이그레이션을 수행하는 방법이 있습니다.
마이그레이션이란 DB에 저장된 데이터를 유지하면서 테이블을 작성하거나 열을 변경하는 등의 기능
자세한 것은 여기 등을 불러 주세요
전제
Node.js에서 Migration 수행
Migration이 할 수 있는 모듈은 많이 있지만, 이번에는 여러가지 시험해 잘 되었다 db-migrate
모듈을 이용한다
프로젝트 만들기
$ mkdir プロジェクト名
$ cd プロジェクト名
$ npm init
// Enter連打
db-migrate 설치
db-migrate 명령을 사용하므로 전역 설치
$ npm install -g db-migrate
다음 명령 실행
$ db-migrate
아래 이미지가 표시되면 설치 성공
DB 정보를 구성 파일에 작성
프로젝트 이름 디렉토리에 database.json
파일 만들기
여기에 Migration을 실시하는 DB의 정보를 기술한다
$ pwd
/Users/Hoge/プロジェクト名
$ touch database.json
설정할 데이터베이스 만들기
$ mysql.server start
$ mysql -u root -p
password
mysql> create database migration;
database.json에 설정 작성
database.json{
"dev": {
"driver": "mysql", //DBの種類
"user": "root", //ログインするユーザ名
"password": "root", //ユーザのパスワード
"database": "migration" //Migrationを行うデータベース名
}
}
Migration 파일 만들기
아래 명령을 실행하여 아래 이미지와 같이 표시되면 Migration 파일 작성에 성공
실패하면 구성 파일이 잘못되었을 수 있습니다.
$ db-migrate create create_table_hoge
프로젝트명/migrations 디렉토리에 Migration 파일이 작성되고 있다
마이그레이션 파일에 DB 작업 설명
작성한 시간 -create 명령으로의 인수명.js 파일에 DB의 조작을 기술해 간다
(위의 명령의 경우 예 : 20170212082607-create-table-hoge.js)
20170212082607-create-table-hoge.js'use strict';
var dbm;
var type;
var seed;
/**
* We receive the dbmigrate dependency from dbmigrate initially.
* This enables us to not have to rely on NODE_PATH.
*/
exports.setup = function(options, seedLink) {
dbm = options.dbmigrate;
type = dbm.dataType;
seed = seedLink;
};
exports.up = function(db) {
/**
* 以下のコードを記述
*/
db.createTable('hoge', {
id: {type: 'int', primaryKey: true},
name: 'string'
});
return null;
};
exports.down = function(db) {
/**
* 以下のコードを記述
*/
db.dropTable('hoge');
return null;
};
exports._meta = {
"version": 1
};
마이그레이션 파일을 사용하여 DB 작업
db-migrate
DB 작업을 수행하려면 드라이버가 필요합니다.
(로컬하고 괜찮습니다)
$ npm install db-migrate-mysql
up 명령을 사용하여 exports.up() 메서드의 내용을 실행합니다.
$ db-migrate up
아래와 같이 표시되면 성공
실패하면 로그인한 사용자 이름과 비밀번호, 해당 사용자의 권한 등에 원인이 있을 수 있음
변경이 이루어지고 있는지 확인
mysql> use migration
mysql> show tables;
テーブルが作成されていることを確認
mysql> show columns from hoge;
カラムが正しいか確認
down 명령을 사용하여 exports.down() 메서드의 내용을 실행합니다.
$ db-migrate down
아래와 같이 표시되면 성공
변경이 이루어지고 있는지 확인
mysql> show tables;
テーブルが消えてることを確認
마지막으로
생략한 곳도 많지만 가능한 한 정중하게 썼습니다.
칼럼의 추가나 삭제등은 이하의 참고 사이트에 기재되어 있으므로, 신경이 쓰이는 사람은 봐 주세요
DB로 작업 (테이블을 만들거나 열을 변경) 할 때마다 create 명령을 사용하여 Migration 파일을 만드는 것 같습니다.
따라서 db-migrate create 操作する名前
등이 좋은 것 같아
up이나 down의 조작의 이력은 migrations 테이블에 남아 있다고 합니다
이 기사 이외에도 질문이 있으면 댓글, 트위터, 메일 등을주세요.
참고 사이트
하드 코일드 원더랜드 | node-db-migrate 편리
db-migrate
Reference
이 문제에 관하여(Node.js를 사용한 Migration 기능을 사용해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/TakagiToru/items/61600235a9552daa5c28
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ mkdir プロジェクト名
$ cd プロジェクト名
$ npm init
// Enter連打
$ npm install -g db-migrate
$ db-migrate
$ pwd
/Users/Hoge/プロジェクト名
$ touch database.json
$ mysql.server start
$ mysql -u root -p
password
mysql> create database migration;
{
"dev": {
"driver": "mysql", //DBの種類
"user": "root", //ログインするユーザ名
"password": "root", //ユーザのパスワード
"database": "migration" //Migrationを行うデータベース名
}
}
$ db-migrate create create_table_hoge
'use strict';
var dbm;
var type;
var seed;
/**
* We receive the dbmigrate dependency from dbmigrate initially.
* This enables us to not have to rely on NODE_PATH.
*/
exports.setup = function(options, seedLink) {
dbm = options.dbmigrate;
type = dbm.dataType;
seed = seedLink;
};
exports.up = function(db) {
/**
* 以下のコードを記述
*/
db.createTable('hoge', {
id: {type: 'int', primaryKey: true},
name: 'string'
});
return null;
};
exports.down = function(db) {
/**
* 以下のコードを記述
*/
db.dropTable('hoge');
return null;
};
exports._meta = {
"version": 1
};
$ npm install db-migrate-mysql
$ db-migrate up
mysql> use migration
mysql> show tables;
テーブルが作成されていることを確認
mysql> show columns from hoge;
カラムが正しいか確認
$ db-migrate down
mysql> show tables;
テーブルが消えてることを確認
생략한 곳도 많지만 가능한 한 정중하게 썼습니다.
칼럼의 추가나 삭제등은 이하의 참고 사이트에 기재되어 있으므로, 신경이 쓰이는 사람은 봐 주세요
DB로 작업 (테이블을 만들거나 열을 변경) 할 때마다 create 명령을 사용하여 Migration 파일을 만드는 것 같습니다.
따라서
db-migrate create 操作する名前
등이 좋은 것 같아up이나 down의 조작의 이력은 migrations 테이블에 남아 있다고 합니다
이 기사 이외에도 질문이 있으면 댓글, 트위터, 메일 등을주세요.
참고 사이트
하드 코일드 원더랜드 | node-db-migrate 편리
db-migrate
Reference
이 문제에 관하여(Node.js를 사용한 Migration 기능을 사용해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/TakagiToru/items/61600235a9552daa5c28
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Node.js를 사용한 Migration 기능을 사용해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/TakagiToru/items/61600235a9552daa5c28텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)