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

Mysql import of laravel voyager database error - Specified key was too long; max key length is 767 bytes

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

defaultStringLength添加到AppServiceProvider的启动方法

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

Schema::defaultStringLength(191);

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

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

这使我免于删除和不得不回滚。

添加:

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

Schema::defaultStringLength(191);

到 AppServiceProvider.php 将从现在开始工作,因为我使用 BREAD 控制器创建的任何其他迁移都将默认 191 添加到字符串长度。

供参考:https://laravel-news.com/laravel-5-4-key-too-long-error