由于指定的密钥太长,似乎无法将laravel数据库上传到实时服务器。 SQL ERROR示例显示密钥约束太长,但它不仅仅在一个表上,而是在许多表上。有没有办法更新这个或更改我的数据库,以便能够上传它?我按照应用服务提供商中的指南进行操作,但我不确定是否必须删除数据库,然后再使用应用服务提供商的boot()方法上的键约束进行迁移。请帮忙。
答案 0 :(得分:1)
事实上,将bootStringLength添加到boot方法确实有效,因为我使用的是供应商脚本,因为迁移是由Voyager中的BREAD控制器创建的,所以我无法回滚迁移。为了使MYSQL导入正常工作,不会丢失数据或滚动并更改我必须手动使用Sequel Pro或您正在使用的任何内容的迁移,并将每个varchar('255')
手动更改为varchar('191')
。< / p>
这使我免于删除和不得不回滚。
添加:
use Illuminate\Support\Facades\Schema; // add this
Schema::defaultStringLength(191);
到AppServiceProvider.php将从现在开始工作,因为我使用BREAD控制器创建的任何其他迁移都会将默认的191
添加到字符串长度。
答案 1 :(得分:0)
将defaultStringLength
添加到AppServiceProvider的引导方法
use Illuminate\Support\Facades\Schema; // add this
Schema::defaultStringLength(191);
回滚迁移,并在添加此行后再试一次。它会起作用。