我通过在命令提示符窗口中执行以下代码行来启动Laravel项目。
cd C:\xampp\htdocs
composer global require laravel/installer
laravel new iezon
然后我执行了构建身份验证方案的命令,到目前为止我还没有编辑任何内容。
artisan make:auth
然后我转到我的配置文件夹,在database.php
内,我将mysql
更改为正确的信息,就像覆盖它的.env
文件一样。
现在,我创建迁移表,以使用以下方法检查与数据库的连接:
php artisan migrate:install
并安装我的表(默认用户表):
php artisan migrate:fresh
然后在调试中抛出一个错误:
Dropped all tables successfully.
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))
at C:\xampp\htdocs\iezon\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 bytes")
C:\xampp\htdocs\iezon\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458
2 PDOStatement::execute()
C:\xampp\htdocs\iezon\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458
有什么主意我错过了什么命令或做错了什么?除了具有正确的database.php
信息的.env
文件和mysql
文件之外,我没有更改任何文件内容。我该如何解决?
答案 0 :(得分:5)
Go To AppServiceProvider.php in ```app\Providers```
并通过添加以下行来更改boot()
\Schema::defaultStringLength(191);
function boot()
{
\Schema::defaultStringLength(191);
}
Laravel默认使用utf8mb4
字符集,该字符集支持在数据库中存储“表情符号”。如果您运行的MySQL版本早于5.7.7
版本或MariaDB版本早于10.2.2
版本,则可能需要手动配置迁移所生成的默认字符串长度,以便MySQL创建索引。他们。您可以通过在Schema::defaultStringLength
中调用AppServiceProvider
方法来配置它