本质上,我和这个人有同样的问题,减去表前缀。因为我没有表前缀,所以他的修复不起作用。http://forums.laravel.com/viewtopic.php?id=972
我正在尝试使用 Laravel 的 Schema Builder 构建一个表,如下所示:
Schema::create('lessons', function($table)
{
$table->increments('id');
$table->string('title')->nullable();
$table->string('summary')->nullable();
$table->timestamps();
});
Schema::create('tutorials', function($table)
{
$table->increments('id');
$table->integer('author');
$table->integer('lesson');
$table->string('title')->nullable();
$table->string('summary')->nullable();
$table->string('tagline')->nullable();
$table->text('content')->nullable();
$table->text('attachments')->nullable();
$table->timestamps();
});
Schema::table('tutorials', function($table)
{
$table->foreign('author')->references('id')->on('users');
$table->foreign('lesson')->references('id')->on('lessons');
});
问题是,当我运行此代码时(在 /setup 路由中),我收到以下错误:
SQLSTATE[HY000]: General error: 1005 Can't create table 'tutorials.#sql-2cff_da' (errno: 150)
SQL: ALTER TABLE `tutorials` ADD CONSTRAINT tutorials_author_foreign FOREIGN KEY (`author`) REFERENCES `users` (`id`)
Bindings: array (
)
基于网络上的帖子和关于如何设置Laravel 的 Eloquent 关系的有限文档,我不确定我做错了什么......
users
已经存在并且它确实有一个id
字段是auto_increment
. 我也在用正确的关系(belongs_to
和has_many
)设置我的模型,但据我所知,这不是问题——这是数据库设置。数据库是InnoDB。
外键到底做错了什么?