Php 如何解决创建数据库表时出现的laravel迁移错误?

Php 如何解决创建数据库表时出现的laravel迁移错误?,php,laravel,migration,Php,Laravel,Migration,我正在尝试迁移laravel中的数据库, 如果我在migration/2014\u 10\u 12\u 100000\u create\u password\u resets\u table.php中添加索引 我犯了这样的错误 My-PC MINGW64 /c/xampp/htdocs/ecoprotect $ php artisan migrate Migration table created successfully. Migrating: 2014_10_12_000000_create

我正在尝试迁移laravel中的数据库, 如果我在migration/2014\u 10\u 12\u 100000\u create\u password\u resets\u table.php中添加索引 我犯了这样的错误

My-PC MINGW64 /c/xampp/htdocs/ecoprotect
$ php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table

   Illuminate\Database\QueryException  : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max k
ey length is 767 bytes (SQL: alter table `password_resets` add index `password_resets_email_index`(`email`))

  at C:\xampp\htdocs\ecoprotect\vendor\laravel\framework\src\Illuminate\Database\Connection.php:664
    660|         // If an exception occurs when attempting to run a query, we'll format the error
    661|         // message to include the bindings with SQL, which will make this exception a
    662|         // lot more helpful to the developer instead of just the database's errors.
    663|         catch (Exception $e) {
  > 664|             throw new QueryException(
    665|                 $query, $this->prepareBindings($bindings), $e
    666|             );
    667|         }
    668|

  Exception trace:

  1   PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 by
tes")
      C:\xampp\htdocs\ecoprotect\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458

  2   PDOStatement::execute()
      C:\xampp\htdocs\ecoprotect\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458

  Please use the argument -v to see more details.
这是我的代码迁移/2014_10_12_100000_创建_密码_重置_table.php:


这个问题在internet上被回答了太多次,请在appServiceProvider.php中添加以下代码。它会解决你的问题

use Illuminate\Support\Facades\Schema;

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

我找到了两种解决这个错误的方法

备选案文1:

在数据库/迁移文件夹中打开用户和密码重置表

只需更改电子邮件的长度:

$table->string('email',191)->index();
备选案文2:

如果您想限制项目中每个字符串的长度,请遵循以下步骤

打开app/Providers/AppServiceProvider.php文件,在引导方法中设置默认字符串长度:

use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}
在app\provider\AppServiceProvider.php方法中添加以下代码:


可能是更好的复制目标的重复,但我不是此标记的常客。我收到此错误Illumb\Database\QueryException:SQLSTATE[HY000][1049]未知数据库“示例”SQL:select*from information_schema.tables其中table_schema=example和table_name=migration数据库示例不存在。。更新.env文件并重新启动服务器
use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}
use Illuminate\Support\Facades\Schema;

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