AWS RDS的外键约束无效

时间:2016-07-23 16:00:24

标签: php mysql sql laravel amazon-web-services

我试图将我的本地laravel数据库移动到RDS,我在Elastic beanstalk中遇到了很多问题所以我决定采用不同的方式。当我迁移时,我得到的每个外键都有以下错误:

  

[Illuminate \ Database \ QueryException] SQLSTATE [HY000]:一般错误:   1215无法添加外键约束(SQL:alter table videos add   约束videos_object_id_foreign外键(object_id)   关于删除级联的参考objectsid

PDOException

[PDOException]
  SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint

我已经研究过RDS的外键约束,他们说它们没有被强制执行,但它说它们可以用于提供信息。 每个外键都是未签名的。

Schema::create('videos', function (Blueprint $table) {

        $table->increments('id');
        $table->integer('object_id')->unsigned()->nullable();
        $table->foreign('object_id')->references('id')->on('objects')->onDelete('cascade');
        $table->integer('user_id')->unsigned()->nullable();
        $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
        $table->rememberToken();
        $table->timestamps();
    });

注意:我也尝试在创建表后将forein键分离为单独的迁移并且没有运气。

1 个答案:

答案 0 :(得分:0)

要查找特定错误,请执行以下操作:

SHOW ENGINE INNODB STATUS

查看LATEST FOREIGN KEY ERROR部分。

子列的数据类型必须与父列完全匹配。

此外,您应该在运行DDL之前运行查询set foreign_key_checks=0,以便您可以按任意顺序创建表,而不需要在相关子表之前创建所有父表。