无法在laravel迁移中添加外键

时间:2015-02-03 14:57:38

标签: mysql laravel foreign-keys migration

我几乎肯定这是一个愚蠢的问题,但我无法看到它。我已经阅读了十几个没有希望的网站和教程。我有简单的迁移,它创建一个新表并定义它。我试图为它添加一个外键约束,但我看起来似乎是矛盾的错误。

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)引用CoursesID)   更新级联)

如果我将其更改为

//$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)引用CoursesID)o删除级联   更新级联)

我错过了什么?

0 个答案:

没有答案