【发布时间】:2012-08-07 07:38:03
【问题描述】:
基本上,我和这个人有同样的问题,减去表前缀。因为我没有表前缀,所以他的修复不起作用。 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)设置我的模型,但据我所知,这不是问题——这是数据库设置。 DB 是 InnoDB。
外键到底做错了什么?
【问题讨论】:
标签: mysql foreign-keys laravel