LoginSignup
2
10

More than 5 years have passed since last update.

Laravel DBマイグレーション

Posted at

環境

PHP7.1
MySQL5.7
Laravel5.6

公式ドキュメント:
https://readouble.com/laravel/5.6/ja/migrations.html

マイグレーションとは

データベースのバージョンコントロールです。
利用するメリットとしては、下記です。

  • 複数人で開発する際、コマンドひとつでDBの設定を同じ状態にできます
  • 手動でカラム変更等すると残らない設定変更の履歴が、コードで残ります

設定

DB名・ユーザ名・パスワードを設定します。

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=[dbname]
DB_USERNAME=[username]
DB_PASSWORD=[password]

マイグレーションファイル作成

Artisanコマンドを実行し、マイグレーションファイルを生成します。

# php artisan make:migration create_samples_table

下記のようなファイルが生成されます。

database/migrations/yyyy_mm_dd_xxxxxx_create_samples_table.php
<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateSamplesTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('samples', function (Blueprint $table) {
            $table->increments('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('samples');
    }
}

upメソッド

新しいテーブル、カラム、インデックスをデータベースに追加するために使用します。

できること:

  • テーブル/カラムの存在チェック
  • テーブル名変更/削除
  • カラム作成 / 変更 / 削除
  • インデックス設定 / 削除
  • カラム修飾子(null指定可・autoIncrement等)
  • デフォルト接続以外のデータベース接続を行いスキーマ設定を行うことも可能です

downメソッド

upメソッドが行った操作を元に戻します。

マイグレーションを実行

# php artisan migrate

テーブルが生成・更新されます。

実行したマイグレーションを元に戻したいとき

ロールバック

php artisan migrate:rollback 

最後に「一度に」実行したマイグレーションをまとめて元に戻します。

全マイグレーションをリセット

php artisan migrate:reset

実行した全てのマイグレーションを元に戻します。

エラーの確認

# tail -200 storage/logs/laravel.log

エラーが出た場合の詳細ログを確認できます。

環境

MySQL5.6でマイグレーションを実行するとsyntaxエラーがでます。

Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

対処法:
https://qiita.com/beer_geek/items/6e4264db142745ea666f

私は、MySQL5.6→5.7にバージョンアップすることで回避しました。
http://www.softplus.jp/wiki/?%E3%82%B5%E3%83%BC%E3%83%90%E6%A7%8B%E7%AF%89%2FCentOS6.x%E3%81%A7MySQL5.6%E2%87%925.7%E3%81%AB%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B

2
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
10