Laravel: Mediable migration error 语法错误或访问冲突:1071 Specified key was too long;最大密钥长度为 1000 字节

Posted

技术标签:

【中文标题】Laravel: Mediable migration error 语法错误或访问冲突:1071 Specified key was too long;最大密钥长度为 1000 字节【英文标题】:Laravel: Mediable migration error Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes 【发布时间】:2018-06-06 04:05:55 【问题描述】:

我是 Laravel 的新手,尝试使用 Laravel 可媒体包,但它在迁移时给我一个错误 -> “[Illuminate\Database\QueryException] SQLSTATE[42000]:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 1000 字节(SQL:alter table media add unique media_disk_directory_filen ame_extension_unique(disk, directory, filename, extension))

[PDO异常] SQLSTATE[42000]:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 1000 字节"

我在 Laravel 5.4.36,其他网站的解决方法是添加这个 ->

 public function boot()
    
        //
        Schema::defaultStringLength(191);
    

但我的项目中已经有这个了。

有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

您可以尝试通过在config/database.php 配置文件中更改engine 值来解决此问题:

'engine' => 'InnoDB ROW_FORMAT=DYNAMIC',

如果你想使用这个修复:

Schema::defaultStringLength(191);

确保您已在 config/app.php 注册此服务提供商

【讨论】:

【参考方案2】:

和我一起工作, 在 config/database.php 里面 我替换这个 '引擎' => 空', 和 : 引擎' => 'InnoDB ROW_FORMAT=DYNAMIC',

这个解决方案而不是对你的字符串长度设置限制。

【讨论】:

以上是关于Laravel: Mediable migration error 语法错误或访问冲突:1071 Specified key was too long;最大密钥长度为 1000 字节的主要内容,如果未能解决你的问题,请参考以下文章

我只想运行 Laravel 的迁移

完全重置 Laravel 5 迁移的东西?

我在 Laravel 迁移基础视图/表中找不到奇怪的错误 1146

如何一次运行 Laravel artisan 迁移?

如何正确删除 Laravel 5.3 中用户表列中的“唯一”列属性?

陷入 django 南迁移 - TransactionManagement 错误