【发布时间】:2018-10-21 07:53:21
【问题描述】:
【问题讨论】:
【问题讨论】:
laravel 5.4.* file location : app/Providers/AppServiceProvider.php
AppServiceProvider.php 已修改
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
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()
{
//
}
}
之后执行 migrate Artisan 命令:
php artisan migrate
【讨论】:
您可能遇到了索引长度配置。
Laravel 默认使用 utf8mb4 字符集,其中包括支持在数据库中存储“表情符号”。如果您运行的 MySQL 版本早于 5.7.7 版本或 MariaDB 版本早于 10.2.2 版本,您可能需要手动配置迁移生成的默认字符串长度,以便 MySQL 为其创建索引。您可以通过在 AppServiceProvider 中调用 Schema::defaultStringLength 方法来配置它:
use Illuminate\Support\Facades\Schema;
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Schema::defaultStringLength(191);
}
【讨论】:
在位于 (app/Providers) 的 AppServiceProvider.php 中添加这个
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
【讨论】:
由于电子邮件使用unique()而发生错误,但它不知道您的唯一值有多长。您有两种方法可以解决此问题
第一个在你的 App\Providers\AppServiceProvider.php 中全局设置,然后在启动方法中添加你的代码:
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
第二个只在你的迁移表中设置,你只需要指定字符串的长度如:
$table->string('email', 191)->unique();
【讨论】: