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

时间:2017-06-16 11:55:34

标签: php mysql laravel syntax-error voyager

由于指定的密钥太长,似乎无法将laravel数据库上传到实时服务器。 SQL ERROR示例显示密钥约束太长,但它不仅仅在一个表上,而是在许多表上。有没有办法更新这个或更改我的数据库,以便能够上传它?我按照应用服务提供商中的指南进行操作,但我不确定是否必须删除数据库,然后再使用应用服务提供商的boot()方法上的键约束进行迁移。请帮忙。

2 个答案:

答案 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添加到字符串长度。

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

答案 1 :(得分:0)

defaultStringLength添加到AppServiceProvider的引导方法

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

Schema::defaultStringLength(191);

回滚迁移,并在添加此行后再试一次。它会起作用。