Php Laravel/Mysql-指定的密钥太长
我想大多数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项目时手动执行以下步骤 如
[照亮\数据库\查询异常]
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;