Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel/Mysql-指定的密钥太长_Php_Laravel - Fatal编程技术网

Php Laravel/Mysql-指定的密钥太长

Php Laravel/Mysql-指定的密钥太长,php,laravel,Php,Laravel,我想大多数Laravel开发人员都知道原子弹在连接MySQL数据库时会爆炸 [照亮\数据库\查询异常] SQLSTATE[42000]:语法错误或访问冲突:1071指定的密钥太长;最大密钥长度为767字节 每次我开始一个新项目时都会发生这种情况,我不希望这样。有没有一个永久的方法。我不想在每次安装laravel时都这样做。根据laravel官方文档,如果您使用的是MySql版本高于5.7.7和MariaDB版本高于10.2.2,则无需在每次安装laravel fresh项目时手动执行以下步骤 如

我想大多数Laravel开发人员都知道原子弹在连接MySQL数据库时会爆炸

[照亮\数据库\查询异常]
SQLSTATE[42000]:语法错误或访问冲突:1071指定的密钥太长;最大密钥长度为767字节


每次我开始一个新项目时都会发生这种情况,我不希望这样。有没有一个永久的方法。我不想在每次安装laravel时都这样做。

根据laravel官方文档,如果您使用的是MySql版本高于
5.7.7
和MariaDB版本高于
10.2.2
,则无需在每次安装laravel fresh项目时手动执行以下步骤

如果您使用的是高于
5.7.7
的MySql版本和高于
10.2.2
的MariaDB版本,则需要执行以下操作以解决此错误

用简单的语言更新MySql或MariaDB版本,以避免 这完全是一个例外

只需编辑
AppServiceProvider.php
文件,并增加
AppServiceProvider.php
文件中的字符串长度

Schema::defaultStringLength(191); //increase string length
并在顶部添加以下行

use Illuminate\Support\Facades\Schema;
您可以在下面的路径
App/Providers/AppServiceProvider.php

有关更多信息,请参考

如果您运行的MySQL版本早于5.7.7版本,或 如果版本早于10.2.2,则可能需要手动 按顺序配置迁移生成的默认字符串长度 让MySQL为它们创建索引


谢谢您的回复。我明白这一点。我唯一的问题是我每次都这么做。有没有一种方法可以让我们一劳永逸地解决这个问题,忘记这个错误呢?我在laravel文档中发现了下面这句话“如果您运行的MySQL版本早于5.7.7版本或早于10.2.2版本,您可能需要手动配置迁移生成的默认字符串长度,以便MySQL为其创建索引。“如何配置默认字符串?@AdeyemiOlusegun如果您阅读了上面的答案,我已经提到了避免异常的每一件事,请检查我运行的同一件事,好的!谢谢,我衷心感谢您的时间。您使用的mysql版本是什么?
In your AppServiceProvider.php file which exists in app/providers folder you will find a function boot where you have to add the followings:

public function boot()
{
    Schema::defaultStringLength(191);
}
and you have add the following at the top of the file:
use Illuminate\Support\Facades\Schema;