由于指定的密钥太长,似乎无法将 laravel 数据库上传到实时服务器。SQL ERROR示例显示键约束太长,但它不仅在一个表上,而且在多个表上。有没有办法更新这个或更改我的数据库以便能够上传它?我遵循了应用服务提供商中的指南,但我不确定是否必须删除数据库,然后使用应用服务提供商的 boot() 方法的键约束再次迁移。请帮忙。
问问题
647 次
2 回答
1
事实上,将 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
于 2017-07-04T13:41:21.917 回答
0
添加defaultStringLength
到 AppServiceProvider 的启动方法
use Illuminate\Support\Facades\Schema; // add this
Schema::defaultStringLength(191);
回滚迁移并在添加此行后重试。它会起作用的。
于 2017-06-16T12:01:00.713 回答