Cakephp迁移-一般错误:1215无法添加外键约束

时间:2018-09-26 19:22:29

标签: php mysql cakephp

在某些迁移中创建外键时遇到问题。

我有以下内容:

20180926184217_Courses.php

public function change()
{
    $table = $this->table('courses', ['id' => true, 'primary_key' => ['id']]);
    $table
        ->addColumn('name', 'string', ['default' => null, 'limit' => 150, 'null' => false])
        ->addColumn('town', 'string', ['default' => null, 'limit' => 50, 'null' => true])
        ->create();
}

20180926191546_Scorecards.php

public function change()
{
    $table = $this->table('scorecards', ['id' => true, 'primary_key' => ['id']]);
    $table
        ->addColumn('course_id', 'integer', ['default' => null, 'limit' => 10, 'null' => false])
        ->addColumn('description', 'string', ['default' => null, 'limit' => 255, 'null' => true])
        ->addColumn('tee', 'string', ['default' => null, 'limit' => 15, 'null' => false])
        ->addForeignKey('course_id', 'courses', 'id', ['delete' => 'SET_NULL', 'update' => 'NO_ACTION', 'constraint' => 'fk_scorecard_course'])
        ->create();
}

运行bin/cake migrations migrate时出现以下错误:

异常:SQLSTATE [HY000]:常规错误:1215无法在[ * / vendor / robmorgan / phinx / src / Phinx / Db / Adapter / PdoAdapter.php,第167行]中添加外键约束 2018-09-26 19:12:50错误:[PDOException] SQLSTATE [HY000]:常规错误:1215无法在* / vendor / robmorgan / phinx / src / Phinx / Db / Adapter /中添加外键约束167行上的PdoAdapter.php

有人可以帮忙吗?我在这里查看了其他答案,但似乎没有任何帮助。

戴夫

1 个答案:

答案 0 :(得分:1)

当列不可为空时,您将无法对删除操作执行SET_NULL。更改代码,您将准备好进行迁移。