我正在努力学习Laravel 5.4
。发布命令php artisan make:auth
并发布命令php artisan migrate
后,将显示以下错误,并且某些数据库表不会受到影响:
[照亮\数据库\ QueryException]
SQLSTATE [42000]:语法错误或访问冲突:1071指定密钥 太长了最大密钥长度为767字节(SQL:alter tableusers
添加唯一users_email_unique
(
SQLSTATE [42000]:语法错误或访问冲突:1071指定密钥 太长了最大密钥长度为767字节
关于我需要使用某些列作为具有Persian Script Font
的字符容器(其他一些列包含英语,西班牙语......字符)的事实,我使用{{创建了MySQL
数据库1}}我认为由于数据库的编码而引发错误。您能否告诉我utf8_general_ci
我将使用什么来构建数据库以便能够利用Laravel的Auth功能?非常感谢你提前。
答案 0 :(得分:1)
让我们看看SHOW CREATE TABLE
,以便我们看到email
的定义。
与此同时,我猜它会包含类似
的内容email VARCHAR(255) CHARACTER SET utf8mb4,
INDEX(email)
做其中一个(每个都有它的缺点):
UNIQUE
或PRIMARY KEY
,请不选择此选项)答案 1 :(得分:1)
Laravel 5.4对此错误有documented个问题。
对于遇到此问题的其他人来说,这也是一个很好的解决方法:
app\Provider\AppServiceProvider.php
将其更改为:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Schema::defaultStringLength(191); //
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
再次运行迁移