라라벨에서 데이터베이스 마이그레이션을 생성하고 실행하는 방법은?
_____Q1: 마이그레이션이란 무엇인가요?
A1: 마이그레이션(Migration)은 데이터베이스 테이블 생성, 수정, 삭제 등의 구조 변경을 코드로 관리할 수 있게 해주는 라라벨의 기능입니다. 이를 통해 버전 관리가 가능하고 팀 협업 시 데이터베이스 변경 내역을 쉽게 공유할 수 있습니다.
Q2: 마이그레이션 파일을 어떻게 생성하나요?
A2: 터미널에서 아래 명령어를 실행하여 마이그레이션 파일을 생성할 수 있습니다.
```
php artisan make:migration create_users_table
```
위 명령어는 `database/migrations` 폴더에 `create_users_table`이라는 이름의 마이그레이션 파일을 생성합니다. 이름은 일반적으로 테이블 이름과 작업 내용을 포함하도록 작성합니다.
Q3: 마이그레이션 파일의 기본 구조는 어떻게 되나요?
A3: 마이그레이션 파일은 `up` 메서드와 `down` 메서드를 포함합니다.
- `up`: 데이터베이스 변경 내용을 작성 (테이블 생성 등)
- `down`: `up`에서 수행한 작업을 되돌리는 내용 작성 (테이블 삭제 등)
예시:
```php
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('users');
}
```
Q4: 마이그레이션을 실행하는 방법은?
A4: 아래 명령어를 터미널에 입력하면 `up` 메서드가 실행되어 데이터베이스가 변경됩니다.
```
```
Q5: 마이그레이션을 롤백하려면 어떻게 하나요?
A5: 가장 마지막에 실행한 마이그레이션을 되돌리려면 아래 명령어를 사용합니다.
```
php artisan migrate:rollback
```
모든 마이그레이션을 처음 상태로 되돌리려면:
```
php artisan migrate:reset
```
모든 마이그레이션 롤백 후 다시 실행하려면:
```
php artisan migrate:refresh
```
Q6: 특정 마이그레이션만 생성하고 실행하려면?
A6: 마이그레이션 파일 생성 시 적절한 이름으로 구분 후, `migrate` 명령어는 모든 마이그레이션을 실행합니다. 부분 실행 기능은 없으나, 마이그레이션 파일명을 조정하거나 롤백 후 특정 마이그레이션만 재실행할 수 있습니다.
Q7: 마이그레이션 파일명 앞에 날짜가 붙는 이유는?
A7: 마이그레이션 파일명 앞에 타임스탬프가 붙어 실행 순서를 관리하기 위함입니다. 이로 인해 의존관계가 있는 테이블 생성이 순서대로 진행됩니다.
Q8: 데이터베이스 설정을 변경하려면 어떻게 해야 하나요?
A8: `.env` 파일에서 `DB_CONNECTION`, `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD` 값을 변경하면 됩니다.
Q9: 마이그레이션 생성 시 테이블 이름과 컬럼 지정 방법은?
A9: 마이그레이션 내 `Schema::create` 메서드의 콜백에서 `$table` 인스턴스를 사용해 컬럼을 정의합니다. 다양한 데이터 타입과 인덱스, 제약 조건 등을 설정할 수 있습니다.
---
요약:
1. `php artisan make:migration create_table_name` 으로 마이그레이션 생성
2. `up`과 `down` 메서드에 데이터베이스 변경 로직 작성
3. `php artisan migrate` 로 마이그레이션 실행
4. `php artisan migrate:rollback` 등으로 되돌리기 가능
5. `.env` 파일에서 DB 설정 관리
이 프로세스를 통해 라라벨에서 데이터베이스 스키마를 안전하고 체계적으로 관리할 수 있습니다.
작성자:
ㅁㅁ [비회원]
| 작성일자: 1년 전
2024-08-26 08:17:04
조회수: 160 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 160 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.