【Laravel】外部キー errorno: 150

外部キーを設定しようとした所エラー吐かれた
結果から書くと”int(11) unsigned”と”int(10) unsigned”の違いだった

環境

  • php 7.0
  • laravel 5.2
  • MySQL 5.5.42 (MAMP3.5)
    • show variables like ‘version%’ //これで確認できた

何が起きた

$ php artisan migrate

[Illuminate\Database\QueryException]

SQLSTATE[HY000]: General error: 1005 Can't create table 'laravel<em>blog.#sql-6a50</em>26' (errno: 150) (SQ

L: alter table <code>comments</code> add constraint <code>comments_post_id_foreign</code> foreign key (<code>post_id</code>) referenc

es <code>posts</code> (<code>id</code>) on delete cascade)

[PDOException]

SQLSTATE[HY000]: General error: 1005 Can't create table 'laravel<em>blog.#sql-6a50</em>26' (errno: 150)

解決方法

idはint(10) unsignedなのでそっちに合わせる

$ php artisan migrate:rollback

//めんどくさくなって全部rollbackさせた

//already existとか出てたらMySQLに入って対象テーブルを "drop table テーブル名" してあげる

$ emacs /database/migrate/対象migrate.php

php
//$table->integer('post_id')->unsigned; // int(11) unsigned
$table->unsignedInteger('post_id'); // int(10) unsigned

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中