SQLSTATE [42000]:语法错误或访问冲突:1071指定的密钥太长;默认值为0。最大密钥长度为767字节

时间:2019-05-25 19:45:16

标签: mysql laravel

在cmd中提交“ php artisan migration:fresh”后出现错误。

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}

SQLSTATE [42000]:语法错误或访问冲突:1071指定的密钥太长;默认值为0。最大密钥长度为767字节(SQL:alter table users添加唯一的users_email_uniqueemail))

2 个答案:

答案 0 :(得分:0)

通过此链接:https://laravel-news.com/laravel-5-4-key-too-long-error

  

对于那些运行MariaDB或更旧版本的MySQL的用户,您可以点击此   尝试运行迁移时出错

     

如要解决此问题的《迁移指南》所述,   编辑您的AppServiceProvider.php文件,并在启动方法中设置一个   默认字符串长度:

use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}
  

此后,一切都应正常进行。

答案 1 :(得分:0)

编辑:仅供参考...此软件包的 v4 在迁移中添加了一些唯一索引,如果您使用的是 MySQL 8.0,则需要 125 而不是 191。 (MariaDB 不需要这些)。