Learning Laravel4 (4):MySQLの設定とマイグレーション このエントリーをはてなブックマークに追加 

28 12月

続いてクイックスタートにMySQLの設定をしろと言われたので、その通りにする(あのクイックスタート、全然親切じゃないね)。

app/config/database.php がデータベースの設定関連のファイルなので編集する。今回はMySQLを使うので、driverがmysqlになっている部分を確認。ユーザ名やパスワードを記載した。

マイグレーション

まずはマイグレーションを作成するため、次のようなコマンドを打った。

php artisan migrate:make create_users_table

すると、「2014_12_28_104241_create_users_table.php」なるファイルが…。え、日付入ってますけど大丈夫?いいの?と思いつつも、クイックスタートが言うならまぁ…いいのかな?と思ってそのまま続けます。

usersテーブルのマイグレーション定義

次のように定義しました。

<?php

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

class CreateUsersTable extends Migration {

  /**
   * Run the migrations.
   *
   * @return void
   */
  public function up()
  {
    Schema::create('users', function($table)
    {
      $table->increments('id');
      $table->string('username', 20);
      $table->string('password', 255);
      $table->timestamps();
    });
  }

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

}

Macでマイグレーション実行時にエラー

php artisan migrate、とタイプするも、実行時にエラー。

SQLSTATE[HY000] [2002] No such file or directory

symfonyでも前にMySQLのソケットが見つからなくてこのエラーがでたので、多分そんなかんじかなーと思って検索、StackOverflowさまさまです。

Setting up Laravel on a Mac php artisan migrate error: No such file or directory

そういうわけで、app/config/database.phpを編集。中略ですが、次のようにunix_socketを設定。

    'mysql' => array(
      'driver'    => 'mysql',
      'host'      => 'localhost',
      'unix_socket' => '/tmp/mysql.sock',
      'database'  => 'wiki',
      'username'  => 'USERNAME',
      'password'  => 'PASSWORD',
      'charset'   => 'utf8',
      'collation' => 'utf8_unicode_ci',
      'prefix'    => '',
    ), 

今度はmigrateコマンドもばっちりうまくいった。

mysql&gt; desc users;
+------------+------------------+------+-----+---------------------+----------------+
| Field      | Type             | Null | Key | Default             | Extra          |
+------------+------------------+------+-----+---------------------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL                | auto_increment |
| username   | varchar(20)      | NO   |     | NULL                |                |
| password   | varchar(255)     | NO   |     | NULL                |                |
| created_at | timestamp        | NO   |     | 0000-00-00 00:00:00 |                |
| updated_at | timestamp        | NO   |     | 0000-00-00 00:00:00 |                |
+------------+------------------+------+-----+---------------------+----------------+
5 rows in set (0.01 sec)

usernameなどの第二引数が文字列長ですね。そして、$table->timestamps();とすることでsymfony1.4などによくあるTimestampable的なものになるみたい。ほーほー

No comments yet

Leave a Reply