Laravel アプリケーションをセットアップしており、ユーザー認証にSentry 2を使用しています。デフォルトの歩哨テーブルとPost
一緒に呼び出されるモデルがあります。User
ユーザーに多くの投稿を持たせ、投稿をユーザーに所属させたいと考えています。これをデータベース スキーマに反映するには、 と の間に外部キー制約を作成する必要がありposts
ますusers
。
私が書いた移行は次のとおりです。
public function up()
{
Schema::table('posts', function(Blueprint $table)
{
$table->integer('user_id')->after('id')->nullable();
$table->foreign('user_id')->references('id')->on('users');
});
}
で実行した後php artisan migrate
、コマンド プロンプトに MySQL エラーが表示されます。
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1005 Can't create table 'blog.dev.#sql-3bb_2d' (errno: 150) (SQL: alter tableposts
add constraint posts_user_id_foreign 外部キー (user_id
) 参照users
(id
)))
users
最初は、主キー列が外部キー列とは異なるように定義されているため、このエラーが発生したと思っていましたが、user_id
両方とも として定義されていint(10)
ます。
Google から、このエラーは 2 つの列の定義が異なることが原因である可能性があることを知りましたが、ここではそうではないようです。