Laravel 5.4 특정 테이블 마이그레이션


85

안녕하세요, https://laravel.com/docs/5.4/migrations에 포함 된 모든 문서를 읽으십시오 .

특정 마이그레이션 파일 (마이그레이션 1 개만 해당)을 마이그레이션하는 방법이 있습니까? 지금은 내가 사용하는 변경 사항이 php artisan migrate:refresh있고 모든 필드가 재설정 될 때마다 발생 합니다.

답변:


133

먼저 다음 migration과 같이 테이블에 대해 하나의 파일을 만들어야 합니다.

public function up()
    {
        Schema::create('test', function (Blueprint $table) {
            $table->increments('id');
            $table->string('fname',255);
            $table->string('lname',255);
            $table->rememberToken();
            $table->timestamps();
        });
    }

후 작성 시험 에서 폴더 마이그레이션 후 새로 만든 폴더 마이그레이션 에 이동 / 복사 테스트 폴더 및 사용자의 명령 아래 실행 터미널 / cmd를 같은 :

php artisan migrate --path=/database/migrations/test/

감사. 이것이 바로 제가 찾던 것입니다.
sadiq

4
나를 위해 일한 PHP 장인 마이그레이션 --path = 데이터베이스 / 마이그레이션 / 테스트 /
Joyal

이것이 해결되지 않으면 stackoverflow.com/questions/19102197/
Hari Harker

76

이 테이블 만 새로 고치고 실행하려면 마이그레이션 파일에 경로를 추가해야합니다.

php artisan migrate:refresh --path=/database/migrations/fileName.php

1
잘 했어. 아무것도 작동하지 않았지만 당신은 해결책이 작동했습니다. 고맙습니다.
Vipertecpro 2019

정확히 내가 찾고 있었다 :) 친구 감사합니다
VishalParkash

어떤 경우에는 첫 번째 백 슬래시가없는 database / migrations / fileName.php가됩니다
Ahmed Aboud

새로 고침으로 모든 데이터가 사라 졌다는 점을 언급 할 가치가 있습니다. 데이터를 유지하려면 db에 데이터를 내보내기로 저장하고 새로 고침 후 가져와야합니다.
Taranis

@Taranis 모두가 아니라 새로 고치는 테이블의 데이터
Wissem SASSI

54

migrations데이터베이스 의 테이블을 보면 마이그레이션 파일 이름과 배치 번호 값 목록이 있습니다.

다음과 같은 구조가 있다고 가정합니다.

id     migration                                           batch

1      2014_10_12_000000_create_users_table                  1 
2      2014_10_12_100000_create_password_resets_table        1
3      2016_09_07_103432_create_tabel_roles                  1

2016_09_07_103432_create_tabel_roles마이그레이션 만 롤백 하려면 마이그레이션 배치 값을 가장 높은 2로 변경하고 다음을 실행하십시오.

php artisan migrate:rollback

여기서는 배치 값이 2 인 테이블 만 롤백됩니다. 이제 해당 테이블을 변경하고 다음 콘솔 명령을 실행하십시오.

php artisan migrate

migrations표의 배치 값 은 마이그레이션 순서를 정의합니다. 롤백하면 가장 최근의 마이그레이션이거나 가장 높은 배치 값이있는 마이그레이션이 처음에 롤백 된 다음 다른 마이그레이션이 롤백됩니다. 따라서 데이터베이스의 값을 변경 한 다음 특정 마이그레이션 파일을 롤백 할 수 있습니다.

테이블 구조 간의 관계 때문에 매번 배치 번호를 변경하는 것은 좋지 않지만 단일 테이블 롤백이 테이블 간의 무결성을 위반하지 않는 경우에 사용할 수 있습니다.

이해하길 바랍니다.


@MartneyAcha 나는 당신이 당신의 문제에 대한 해결책을 가지고 있다는 것을 기쁘게 생각합니다.
Sagar Gautam

좋은 설명입니다. 당신이 당신의 테이블에 외래 키 관계가있는 경우, 그것은하지 않습니다 일
Ogbonna 비탈

@OgbonnaVitalis 감사합니다, 독립 테이블을위한 더 쉬운 방법이 될 것입니다. 허용되는 대답은 단일 테이블을 롤백하고 마이그레이션하는 정확한 방법을 제공합니다. 여러 독립 테이블의 경우 작동합니다.
Sagar Gautam

14

자동 완성을 위해 탭을 사용하는 경우

php artisan migrate --path='./database/migrations/2019_12_31_115457_create_coworking_personal_memberships_table.php'

나를 위해 작동하지 않습니다, zsh 사용
digout

8

파일을 새 디렉토리 (예 : 선택됨)에 넣은 다음 적용해야합니다.

php artisan migrate  --path=/database/migrations/selected

롤백이 필요한 경우 :

php artisan migrate:rollback  --path=/database/migrations/selected

노트 :

php artisan migrate:refresh

롤백 한 다음 기본 디렉토리 (/ database / migrations)의 모든 마이그레이션 파일을 마이그레이션합니다.


새 디렉토리를 만들 필요가 없습니다. '--path = / database / migrations / fileName.php'와 같은 파일 이름을 직접 입력 할 수 있습니다.
Wissem SASSI

8

다음과 같은 명령을 실행할 수 있습니다.

php artisan migrate --path=/database/migrations/2020_04_10_130703_create_test_table.php

7
php artisan help migrate

다음 옵션이 표시됩니다.

--path [= PATH] 실행할 마이그레이션 파일의 경로

그런데 마이그레이션하려는 파일의 루트 폴더를 나타낼 수 있습니다.

php artisan migrate --path=/database/migrations/sample.php

또는 마이그레이션에서 새 폴더를 만든 다음 원하는 모든 마이그레이션 파일을 마이그레이션 할 수 있습니다.

php artisan migrate --path=/database/migrations/new_folder

방금 's'를 놓쳤습니다. '마이그레이션'이어야합니다! php artisan migrate --path = / database / migrations / new_folder
Pasindu

php artisan migrate --path = / database / migrations / new_folder / need the last '/'
Pasindu Jayanath

5

언급 할 가치가있는 다른 솔루션을 게시하고 싶었습니다.

  1. 마이그레이션 테이블에서 마이그레이션 이름이있는 행을 찾아 삭제하십시오. 다음과 같이 표시됩니다. 2016_06_01_000001_create_oauth_auth_codes_table
  2. 데이터베이스에서 테이블 제거 (예 : DROP TABLE oauth_auth_codes)
  3. PHP artisan migrate 실행

필요한 테이블 만 마이그레이션하고 다른 것은 건드리지 않습니다.



3

테이블을 삭제하고 마이그레이션 테이블에서 해당 레코드를 제거하십시오.

그 후 마이그레이션을 다시 실행하십시오.

php artisan migrate

3

수정-데이터베이스 앞의 슬래시 제거

$ php artisan migrate --path=database/migrations/migration.php

1
마이그레이션 할 항목이 없습니다.
zod


3

하나의 특정 테이블을 생성하려는 경우. 이 코드를 사용할 수 있습니다. laravel (5.x) 버전에서 작동합니다.

php artisan migrate:refresh --path=/database/migrations/fileName.php

2

또는 "migrations"테이블의 데이터베이스에서 마이그레이션 파일 이름을 삭제 한 다음 다음을 실행할 수 있습니다. php artitsan migration


1

--path = 옵션을 사용하여 실행하려는 특정 하위 폴더를 정의하고 거기에 특정 마이그레이션을 배치 할 수 있습니다.

또는 이상적이지 않은 DB 및 마이그레이션 테이블에서 참조 및 테이블을 제거해야합니다.


1

다른 테이블을 생성하려면 새 마이그레이션 파일을 생성하기 만하면됩니다. 작동합니다.

당신은라는 이름의 마이그레이션을 만드는 경우 users_table와를 id, first_name, last_name. 다음과 같은 마이그레이션 파일을 만들 수 있습니다.

    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('first_name',255);
            $table->string('last_name',255);
            $table->rememberToken();
            $table->timestamps();
        });
    }
    public function down()
    {
        Schema::dropIfExists('users');
    }

마이그레이션하지 않고 "status"와 같은 다른 파일을 추가하려는 경우 : 새로 고침. "add_status_filed_to_users_table"과 같은 다른 마이그레이션 파일을 만들 수 있습니다.

public function up()
{
    Schema::table('users', function($table) {
        $table->integer('status');
    });
} 

롤백 옵션을 추가하는 것을 잊지 마십시오.

public function down()
{
    Schema::table('users', function($table) {
        $table->dropColumn('status');
    });
}

를 사용하여 마이그레이션을 실행 php artitsan migration하면 새 마이그레이션 파일 만 마이그레이션됩니다.

그러나 첫 번째 관리 파일 (users_table)에 "status"파일을 추가하고 마이그레이션을 실행하면. 마이그레이션 할 것이 없습니다. 를 실행해야합니다 php artisan migrate:refresh.

이 도움을 바랍니다.



1

php artisan migrate --path = / database / migrations / fileName.php

지침에 따라 여기에서이 명령 파일 이름을 실행하면 마이그레이션 테이블 이름이됩니다. 예 : php artisan migrate --path = / database / migrations / 2020_02_21_101937_create_jobs_table.php



0

이 명령은 터미널에서만 실행할 수 있습니다.

php artisan migrate --path=database/migrations/2020_10_01_164611_create_asset_info_table.php

마이그레이션 후에는 특정 파일 이름을 입력해야합니다. 또는 마이그레이션 내에 폴더가있는 경우 마이그레이션 후에 해당 폴더 이름을 추가하십시오.

이렇게

php artisan migrate --path=database/migrations/yourfolder/2020_10_01_164611_create_asset_info_table.php

나는 이것이 당신에게 조금 도움이되기를 바랍니다. 행복한 코딩.


-1

먼저 다음 명령을 작성해야합니다.

1 단계:

php artisan migrate:rollback

2 단계:

php artisan migrate

테이블은 데이터베이스로 돌아갑니다.


각 단계에 작은 설명을 넣으면 더 도움이 될 것입니다. 이것은 실제로 무슨 일이 일어나고 있는지 사용자를 이해하는 데 도움이 될 것입니다. 이것은 마술처럼 일을 작동시키는 치트 코드처럼 보이지만 어떤 경우에는 결과가 좋지 않을 수 있습니다.
Ashwani Agarwal

질문을주의 깊게 읽으십시오. 그 사람은 하나의 테이블 만 요청했습니다. 귀하의 방법은 모든 마이그레이션을 롤백 한 다음 모든 테이블을 생성합니다. 또한 php artisan migration:refresh같은 역할을합니다.
Wajahat Hashmi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.