Php laravel voyager数据库Mysql导入错误-指定的密钥太长;最大密钥长度为767字节

Php laravel voyager数据库Mysql导入错误-指定的密钥太长;最大密钥长度为767字节,php,mysql,laravel,syntax-error,voyager,Php,Mysql,Laravel,Syntax Error,Voyager,似乎无法将laravel数据库上载到live server,因为指定的密钥太长。示例显示键约束太长,但它不只是在一个表上,而是在多个表上。有没有办法更新此文件或更改我的数据库以便能够上载它?我遵循了应用程序服务提供程序中的指南,但我不确定是否必须删除数据库,然后使用应用程序服务提供程序上boot()方法的键约束再次迁移。请提供帮助。将defaultStringLength添加到AppServiceProvider的引导方法中 use Illuminate\Support\Facades\Sche

似乎无法将laravel数据库上载到live server,因为指定的密钥太长。示例显示键约束太长,但它不只是在一个表上,而是在多个表上。有没有办法更新此文件或更改我的数据库以便能够上载它?我遵循了应用程序服务提供程序中的指南,但我不确定是否必须删除数据库,然后使用应用程序服务提供程序上boot()方法的键约束再次迁移。请提供帮助。

defaultStringLength
添加到AppServiceProvider的引导方法中

use Illuminate\Support\Facades\Schema; // add this 

Schema::defaultStringLength(191);

回滚迁移并在添加此行后重试。它会起作用。

事实上,将defaultStringLength添加到引导方法中确实有效,但是因为我使用的是供应商脚本,所以我无法回滚迁移,因为迁移是由Voyager中的BREAD Controller创建的。为了使MYSQL导入正常工作,在不丢失数据或滚动和更改迁移的情况下,我必须使用Sequel Pro或您正在使用的任何工具手动将每个
varchar('255')
手动更改为
varchar('191')

这使我免于删除和回滚

添加:

use Illuminate\Support\Facades\Schema; // add this 

Schema::defaultStringLength(191);
从现在起,AppServiceProvider.php将起作用,因为我使用BREAD控制器创建的任何其他迁移都将在字符串长度中添加默认的
191


仅供参考:

我只关心这样做,重新加载数据,以及由于保存的sql语句而产生的相同问题。我以前做过这件事,所以我可以告诉您它会正常工作。只需回滚迁移文件并重试。这是最新的laravel设置?您可以看看这个问题:不,这不是最新的,它是一个项目,我使用的是voyager软件包,这使得它更加棘手,因为他们有自己的迁移,所以当前回滚时会出错。不过,谢谢。我想只要修改一下设置就行了