Laravel 添加唯一约束时出现QueryException

Laravel QueryException when adding unique constraint

我想创建一个“用户”table,并将电子邮件记录作为我的 Laravel 项目

的迁移文件的唯一值
    Schema::create('users', function (Blueprint $table) {
      $table->id();
      $table->string('company')->nullable();
      $table->string('street', 80)->nullable();
      $table->string('zip', 10)->nullable();
      $table->string('city', 80)->nullable();
      $table->string('country', 3)->nullable();
      $table->string('firstname', 80)->nullable();
      $table->string('lastname', 80)->nullable();
      $table->string('email', 80);
      $table->timestamp('email_verified_at')->nullable();
      $table->string('password');
      $table->timestamps();
    });

工作正常,但是如果我将 $table->string('email', 80); 替换为 $table->string('email', 80)->unique(); 我会收到错误 SQLSTATE[HY000] [2002] Connection refused (SQL: alter table usersadd uniqueusers_email_unique(email))
我读到,在 AppServiceProvider.php 中添加 Schema::defaultStringLength(191); 会解决这个问题,但即使在添加它
并使用 php artisan config:clear && php artisan cache:clear && php artisan view:clear && php artisan route:clear 清除缓存后,错误还在。

在尝试更多之后我意识到,错误是我的 mariadb 版本,正如 MariaDB 10.4 支持文本列上的 UNIQUE KEY,所以我更改了 $table->string('email')->unique()$table->text('email')->unique() 并且成功了。