【发布时间】:2014-04-03 01:39:03
【问题描述】:
我设置了一个 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 错误:
[照亮\数据库\查询异常]
SQLSTATE[HY000]:一般错误: 1005 无法创建表 'blog.dev.#sql-3bb_2d' (errno: 150) (SQL: 改变表posts添加约束posts_user_id_foreign 外键 (user_id) 引用users(id))
起初我以为是因为users 中的主键列与我的外键列user_id 的定义不同,但它们都定义为int(10)。
从谷歌我了解到这个错误可能是由于两列定义不同造成的,但这里似乎不是这种情况。
【问题讨论】:
标签: php mysql laravel foreign-keys laravel-eloquent