我几乎肯定这是一个愚蠢的问题,但我无法看到它。我已经阅读了十几个没有希望的网站和教程。我有简单的迁移,它创建一个新表并定义它。我试图为它添加一个外键约束,但我看起来似乎是矛盾的错误。
class CreateAlchemyPages extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
Schema::dropIfExists('alchemy_pages');
Schema::create('alchemy_pages', function(Blueprint $nt)
{
$nt->engine = 'InnoDB';
$nt->increments('id');
$nt->integer('course_id');
$nt->foreign('course_id')->references('ID')->on('Courses')->onDelete('cascade')->onUpdate('cascade');
$nt->integer('parent_page_id')->unsigned();
$nt->integer('navigation_order');
$nt->string('full_title');
$nt->string('short_title');
$nt->string('page_info');
$nt->integer('state');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
// Cleanup our tables
}
}
运行迁移后,出现以下错误:
[照亮\数据库\ QueryException] SQLSTATE [23000]:完整性约束违规:1022无法写入;表'#sql-60d4_d54'中的重复键(SQL:alter t able
alchemy_pages
添加约束alchemy_pages_course_id_foreign foreign 删除级联上的密钥(course_id
)引用Courses
(ID
) 更新级联)
如果我将其更改为
//$nt->integer('course_id')->unsigned();
$nt->foreign('course_id')->references('ID')->on('Courses')->onDelete('cascade')->onUpdate('cascade');
它给了我错误:
[照亮\数据库\ QueryException] SQLSTATE [42000]:语法错误或访问冲突:1072表中不存在键列'course_id'(SQL:alter table
alchemy_pages
添加约束alchemy_pages_course_id_foreign foreign 密钥(course_id
)引用Courses
(ID
)o删除级联 更新级联)
我错过了什么?