在执行php artisan admin:install
命令安装laravel-admin
的时候,如果你使用的数据库是MySQL v5.7.7
以下版本就会报下面的错:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))
报错原因
laravel 5.4
改变了默认的数据库字符集,现在utf8mb4
包括存储emojis支持。如果你运行MySQL v5.7.7或者更高版本
,则不需要做任何事情。
解决方法
-
1.在
app\Providers\AppServiceProvider.php
文件的boot()
方法中添加默认值<?phpnamespace App\Providers;use Illuminate\Support\Facades\Schema; use Illuminate\Support\ServiceProvider; //add fixed sqlclass AppServiceProvider extends ServiceProvider {/*** Register any application services.** @return void*/public function register(){//}/*** Bootstrap any application services.** @return void*/public function boot(){Schema::defaultStringLength(191); //add fixed sql} }
-
2.删除已经生成的
user
和migrate
两张数据表,然后重新执行php artisan admin:install
,否则会继续报下面的错误SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists
参考文章:数据库创建特殊字符过长问题 · Issue #1541 · z-song/laravel-admin (github.com)