我试图将我的本地laravel数据库移动到RDS,我在Elastic beanstalk中遇到了很多问题所以我决定采用不同的方式。当我迁移时,我得到的每个外键都有以下错误:
[Illuminate \ Database \ QueryException] SQLSTATE [HY000]:一般错误: 1215无法添加外键约束(SQL:alter table
videos
add 约束videos_object_id_foreign
外键(object_id
) 关于删除级联的参考objects
(id
)
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键分离为单独的迁移并且没有运气。
答案 0 :(得分:0)
要查找特定错误,请执行以下操作:
SHOW ENGINE INNODB STATUS
查看LATEST FOREIGN KEY ERROR
部分。
子列的数据类型必须与父列完全匹配。
此外,您应该在运行DDL之前运行查询set foreign_key_checks=0
,以便您可以按任意顺序创建表,而不需要在相关子表之前创建所有父表。