我尝试了很多东西,但它没有用。让我用我所做的:
我收到此错误:
你能帮帮我吗?SQLSTATE [HY000]:常规错误:1005无法创建表
cmpe
。#sql-2068_94
(错误:150"外键约束我 错误形成")
答案 0 :(得分:0)
所有外国字段都需要是int而不是字符串。也让他们没有签名。这是创建外键的正确格式。
一个例子:
$table->integer('myForeignID')->unsigned();
这条线可以删除,因为它很可能不需要:
$table->foreign('year')->references('id')->on('course');
$table->foreign('semester')->references('id')->on('course');
在桌面帖子之前渲染表课程和教师。
答案 1 :(得分:0)
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->integer('instructors_id')->unsigned()->nullable();
$table->integer('course_id')->unsigned()->nullable();
$table->integer('year')->unsigned()->nullable();
$table->integer('semester')->unsigned()->nullable();
$table->string('body');
$table->integer('post_id');
$table->rememberToken();
$table->timestamps();
$table->foreign('instructors_id')->references('id')->on('instructors');
$table->foreign('course_id')->references('id')->on('course');
$table->foreign('year')->references('id')->on('course');
$table->foreign('semester')->references('id')->on('course');
});
}
public function up()
{
Schema::create('course', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->integer('semester');
$table->integer('year');
});
}