Php Heroku上的完整性约束冲突。Can';部署时不加载默认值

Php Heroku上的完整性约束冲突。Can';部署时不加载默认值,php,laravel,heroku,Php,Laravel,Heroku,我的网站在本地运行良好,但当我将其上传到heroku并尝试创建用户时,我得到了 SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`heroku_58d91081036dbb1`.`users`, CONSTRAINT `users_role_id_foreign` FOREIGN KEY (`role_

我的网站在本地运行良好,但当我将其上传到heroku并尝试创建用户时,我得到了

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key 
constraint fails (`heroku_58d91081036dbb1`.`users`, CONSTRAINT `users_role_id_foreign` FOREIGN KEY 
(`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE) (SQL: insert into `users` (`name`, `email`, 
`password`, `updated_at`, `created_at`) values (Dominykas, d@s.com, 
$2y$10$yZb.rSEmsLQCkd.5HStt1.9DH6jiBQbyiixlessIVjSKCGErx9E1K, 2019-12-02 13:00:02, 2019-12-02 13:00:02))
正如我发现的,我在迁移中的默认值不起作用

$table->unsignedBigInteger('role_id')->default(2);
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
因为当我为新用户设定种子并提供role_id时,我不会得到这个错误,但如果我将其保留为默认值,则会得到一个错误


我应该如何修复它,也许我应该尝试另一个托管提供商?

好的,所以如果您的网站在本地工作正常,但在部署时会出现与数据库相关的错误,如
完整性约束冲突
,这可能是因为您忘记了heroku将表增加10,例如id将显示如下:
1,11,21、31


在我的例子中,我将默认值设置为2,这是另一个表的外部id,在heroku中,它现在是11,与主机无关。。数据库中很可能没有id为
2
的角色,您不能将该外键设置为它指向的表中不存在的值。您的
角色
表中是否有id为2
的角色?您可能不应该在迁移中设置默认值,您的代码应该指定它,如果表中没有任何要保存的数据,可以尝试使用:
php-artisan-migrate:refresh--seed
,如果需要,可以将该字段设置为空。请注意,此命令将删除所有表(重置自动索引增量),将根据迁移文件重新创建所有表,并为数据库设定种子。如果您的迁移/种子中的一切都正确,它应该可以使用您想要的任何人,heroku很好,它只是一个非传统的设置,但它非常流行