Php 如何解决创建数据库表时出现的laravel迁移错误?
我正在尝试迁移laravel中的数据库, 如果我在migration/2014\u 10\u 12\u 100000\u create\u password\u resets\u table.php中添加索引 我犯了这样的错误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
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);
}