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

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

マイグレーション

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

[bash]php artisan migrate:make create_users_table[/bash]

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

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

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

[php]<?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’);
}

}[/php]

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

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

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

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

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

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

[php] ‘mysql’ => array(
‘driver’ => ‘mysql’,
‘host’ => ‘localhost’,
‘unix_socket’ => ‘/tmp/mysql.sock’,
‘database’ => ‘wiki’,
‘username’ => ‘USERNAME’,
‘password’ => ‘PASSWORD’,
‘charset’ => ‘utf8’,
‘collation’ => ‘utf8_unicode_ci’,
‘prefix’ => ”,
), [/php]

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

[sql]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)[/sql]

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

投稿者 peaco

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です