Lumen 5.6 Migrate Error Specified key was too long max key length is 767 bytes
Posted
技术标签:
【中文标题】Lumen 5.6 Migrate Error Specified key was too long max key length is 767 bytes【英文标题】: 【发布时间】:2018-12-12 15:56:24 【问题描述】:我使用 Lumen 5.6 和 mysql。当我输入“php artisan migrate”时出现以下错误:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t
oo long; max key length is 767 bytes (SQL: alter table `users` add unique `
users_email_unique`(`email`))
我将以下代码放入 AppServiceProvider 中的“启动”方法中
Schema::defaultStringLength(191);
但我没有取得任何成功。
【问题讨论】:
【参考方案1】:你只需要多一步
转到引导文件夹上的 app.php 并取消注释或修改此行
// $app->register(App\Providers\AppServiceProvider::class);
到这个代码
$app->register(App\Providers\AppServiceProvider::class);
祝你有美好的一天
【讨论】:
【参考方案2】:你需要做几件事。我也遇到了这个问题并通过以下两个步骤修复了它
进入 bootstrap 目录中的 app.php 并取消注释或修改此行。
// $app->register(App\Providers\AppServiceProvider::class);
现在你需要在AppServiceProvider
file 中定义boot()
function
public function boot()
Schema::defaultStringLength(191);
那你就可以走了!
【讨论】:
@MCFreddie777 很高兴知道我的回答对您有所帮助! :)【参考方案3】:转到文件database.php
中的配置然后编辑
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
到
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
【讨论】:
这是次优解决方案,因为 utf8_unicode_ci 是一个有限的(到 3 个字节)字符集 我什至在我的 Lumen 项目中都没有看到这个文件。【参考方案4】:use Illuminate\Support\Facades\Schema; //AppServiceProvider.php
public function boot()
Schema::defaultStringLength(191);
//rollback your migration or delete all table from database then migrate again.
【讨论】:
【参考方案5】:-
在 bootstrap/app.php 中取消注释这一行:
$app->register(App\Providers\AppServiceProvider::class);
-
在 app/AppServiceProvider.php 中添加下面的公共函数到
AppServiceProvider
类:
public function boot()
Schema::defaultStringLength(191);
【讨论】:
【参考方案6】:已知在 Laravel/Lumen 7.x 中工作:
我已经尝试取消注释AppServiceProvider::class
和上面提到的其他解决方案,但以下对我有用。
如果您在/vendor/laravel/lumen-framework/config/database.php
中查找charset
和collation
,代码会检查您的.env
文件并分别使用utf8mb4
和utf8mb4_unicode_ci
。
如果您的数据库的字符集设置为utf8
,排序规则设置为utf8_unicode_ci
,只需将以下内容添加到您的.env
文件中:
# .env
...
DB_CHARSET=utf8
DB_COLLATION=utf8_unicode_ci
...
【讨论】:
以上是关于Lumen 5.6 Migrate Error Specified key was too long max key length is 767 bytes的主要内容,如果未能解决你的问题,请参考以下文章
php artisan migrate 给我 Lumen 错误
Lumen 5.6 - php artisan db:seed 出现错误“类 DatabaseSeeder 不存在”
Laravel 5.4 migrate时报错: Specified key was too long error